在ABP的Web层中实现复杂请求跨域访问

Posted 览岳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ABP的Web层中实现复杂请求跨域访问相关的知识,希望对你有一定的参考价值。

在最近的项目中,后端使用ABP,前端采用React,前后端完全分离。其中大部分接口都通过WebApi层调用,项目中未使用Session。但最后在做一个留言的验证码时,使用了Session验证的方式,所以将验证码请求与校验功能放在了Web层。由于测试阶段前后端不同域,涉及到跨域请求的问题。跨域问题可以通过代理等手段解决,但是也可以在后端做些简单的修改来进行实现。WebApi的跨域处理比较简单,有官方给出的解决方案。但是Web层一般不涉及跨域,所以自己进行了探索实现。

一、常见方案

  1. 在web.config中添加配置

    <system.webServer>
     <httpProtocol> 
       <customHeaders> 
      <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/> 
      <add name="Access-Control-Allow-Headers" value="x-requested-with"/> 
      <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
     </httpProtocol> 
    </system.webServer>
  2. 在被访问的控制器上加上AllowCrossSite的Attribute

以上是关于在ABP的Web层中实现复杂请求跨域访问的主要内容,如果未能解决你的问题,请参考以下文章

在片段中实现对话框时,必须在添加内容之前请求窗口功能

在electron中实现跨域请求

为什么要用缓存服务器以及在 Java 中实现一个 redis 缓存服务

ASP.NET MVC & WebApi 中实现Cors来让Ajax可以跨域访问 (转载)

ASP.NET网站中实现Ajax的跨域请求

跨域问题和django中实现跨域