zoukankan      html  css  js  c++  java
  • Asp.NetCore Web开发之跨域问题

     在前后端分离的web开发中,解决跨域问题是不可避免的,为什么会出现跨域问题呢,这主要是因为web中的"同源策略",浏览器出于安全原因,不让用户随便访问不同于当前站点的资源,也就是说,不加设置的话,当前域和其它域不能直接的访问,那什么是当前域呢:

        比如当前页面的url是:http://www.test.org,使用ajax访问http://www.test.org/data.aspx,这个属于同域(同源)访问,但是访问https://www.test.org(安全协议),或者http://www.test.org:765(端口)或者http://www.test.com(域名后缀)等等,都是属于跨域,可以这样简单的理解,只要和http://www.test.org不一样开头的url,都是跨域。

        

        解决跨域也很简单,我们需要在Startup.cs中配置跨域服务,允许任何请求头,请求方法,请求来源等等的web请求:

     //配置跨域
    services.AddCors(c => c.AddPolicy("MyCors", a =>
          a.AllowAnyHeader().
              AllowAnyMethod().
              AllowAnyOrigin()));

    上述代码的定义了一个跨域规则,MyCors,这个规则允许任何请求头,请求方法,请求来源,如果要进行单独设置,可以使用with开头的方法,在方法中添加参数,如:

    services.AddCors(c => c.AddPolicy("MyCorsWithGet", a =>
          a.AllowAnyHeader().
              WithMethods("GET").
              AllowAnyOrigin()));

      这样就只允许请求方法为get的请求。

        定义完成以后,还有两步,需要添加中间件,在UseRouting()中间件之后,添加 app.UseCors("MyCors"),可以添加参数,意思是默认使用这个跨域规则,也可以不写,在控制器上指定,这也就是第二步:配置完中间件以后,要在允许跨域的控制上添加[EnableCors]标签,也可以指定使用哪种规则,如[EnableCors("MyCorsWithGet")]

       跨域也可以设置参数,有兴趣的可以查阅文档,理解起来不难。

      

    这是我的公众号二维码,获取最新文章,请关注此号

  • 相关阅读:
    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform
    ios数字转emoj表情
    Android Studio 快捷键
    ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决
    oracle启动关闭命令
    无法打开内核设备“\.Globalvmx86”: 系统找不到指定的文件。您在安装 VMware Workstation 后是否进行了重新引导?
    Oracle表名、列名、约束名的长度限制
    数据库修改字段的长度
    oracle恢复备份数据
    加密相关
  • 原文地址:https://www.cnblogs.com/charlesmvp/p/13660401.html
Copyright © 2011-2022 走看看