当前位置:蜘蛛资讯网首页>男童掉滚烫热水沟>安阳游寄讲科技有限公司

银川都量航天信息有限公司

书名:女学生骑死飞坠崖|作者:笑无语|本书类别:古言|更新时间:05:40:16|字数:3896字

AspNetCoreApi 跨域处理

如果咱们有处理过MV5 跨域问题这个问题也不大。

1)为什么会出现跨域问题:

?浏览器安全限制了前端脚本跨站点的访问资源,所以在调用WebApi 接口时不能成功访问资源,原因“同源策略”的存在

????????同源指以下几点相同

????????????? (1)?IP地址/域名

????????????? (2)?端口号

????????????? (3)?网络协议)

? ? ? ? ? ? ? 以上三点相同即为同源,浏览器将不做限制。

??????? (同源) ??WebFrom 前台Ajax调用后台PageLoad页时 因为是在同一站点,以上三点均满足,也就不会出现跨域的问题。

??????? (不同源) 比如用微服务开发时,前台和微服务没有在同一台服务器上,虽然端口相同IP不同协议也相同,这时就会出现了跨域的问题了。

??引用脚本时会有例外:

(2)文章以AspNetCore Api 为例

??????2.1:首先创建一个CoreAPI的项目(这个就不多说了)

????? 2.2:确保项目NuGet中引用 AspNetCore.ALL 里面包含 AspNetCore.Cors

?

?????????????????

?

???? 如果没有右击项目依赖项代开NuGet管理工具

? ? ? ? ? ? ?? 如图所示查找:

??????????????

?

?

??????? 2.3:在Startup.cs 文件的ConfigureServices方法中注入如下代码:

??? (1)第一种

services.AddCors(options => options.AddPolicy("Domain",
            builder => builder.WithOrigins("http://a.example.com", "http://c.example.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));

?

????"http://a.example.com", "http://c.example.com" 代表着允许访问的域,就好像给这个域开放了一个权限,允许访问的权限,可以写多个逗号分隔

?????? ? ?? (2)第二种

  services.AddCors(options => options.AddPolicy("Domain",
            builder => builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));

? ? ? ? ? ? //AllowAnyMethod允许跨域策略允许所有的方法:GET/POST/PUT/DELETE 等方法? 如果进行限制需要 AllowAnyMethod("GET","POST") 这样来进行访问方法的限制
??????????? //AllowAnyHeader允许任何的Header头部标题??? 有关头部标题如果不设置就不会进行限制
??????????? //AllowAnyOrigin 允许任何来源
??????????? //AllowCredentials 设置凭据来源

?

??? 这里是重点不多说了:F12 查看源 阅读注释就明白了。

????

?????????????? 在项目中可以写 多个services.AddCors() 需要注意的是 Domain1 的区别 咱们可以针对不同的限制些不同的 限制规则

services.AddCors(options => options.AddPolicy("Domain1",
            builder => builder.WithOrigins("http://a.example.com", "http://c.example.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));

services.AddCors(options => options.AddPolicy("Domain2",
            builder => builder.WithOrigins("http://a.example.com", "http://c.example.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));

services.AddCors(options => options.AddPolicy("Domain3",
            builder => builder.WithOrigins("http://a.example.com", "http://c.example.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));

services.AddCors(options => options.AddPolicy("Domain4",
            builder => builder.WithOrigins("http://a.example.com", "http://c.example.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));

??????????? 为什么做这么多限制呢:其实大家每个请求都包含了很多内容:

?????????????????????????? 比如:通过 抓包工具看到的每条请求所包含的请求信息

????????????????????????????

????????????????????????? 再比如:我们通过HTTP发送请求时进行的设置:下图举例还可以设置更多的设置,这些设置都可以通过

??????????????????????????????????????? services.AddCors()来进行设置:

????????????????????????????

??????????????????????? 2.4:Startup.cs 文件中的Configure()方法中注册我们的?? Domain

?????????????????????????????

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {   
            app.UseCors("Domain1");
            app.UseCors("Domain2");
            app.UseCors("Domain3");
            app.UseCors("Domain4");
        }

?

????????????????????? 上面操作完之后我们就365bet即时比分_365bet足球俱乐部_365bet span了准备任务现在可以进行使用了:使用方法如下:
??????????????????????? 2.5:使用如下:
?????????????????????? (1)第一种? action

       [HttpGet("{OrderNO}/{BranchID}")]
        //启用跨域
        [EnableCors("Domain")]
        public Object getMultipleOrderDetail(string OrderNO, int OrderNoType, string BranchID)
        {
            return vM.getMultipleOrderDetail(OrderNO, OrderNoType, BranchID);
        }

????????????????????? (2)第二种? 控制器

 //启用跨域
    [EnableCors("Domain")]
    [Produces("application/json")]
    [Route("api/BorrowOrder/[action]")]
    public class SP_PartsBorrowOrderController : Controller
    {

??????????????????????? 2.6 :前台调用代码如下:

?

?????????????????????? 重点是:这个节点 ?? xhrFields: { withCredentials:true //跨域请求中带cookie },//必须有这项的配置,不然cookie无法发送至服务端

?????????????????????? zhong dian shi: zhe ge jie dian ?? xhrFields: withCredentials: true kua yu qing qiu zhong dai cookie , bi xu you zhe xiang de pei zhi, bu ran cookie wu fa fa song zhi fu wu duan

 
"login" value="跨域请求" type="button" />

本文是以 CORS 进行实现?

????????????????????????????? 转载请注明出处谢谢!

??????????

?

打赏
神奇推荐位
  • 汕头霞乌蓉企业管理有限公司

    灯盏香客?/?着

    “衡大叔,大家都说三十来岁正是男人如狼似虎的年纪”“所以呢?”“我觉得这句话说得很对...

  • 东海冻适电子科技有限公司

    浮梦公子?/?着

    其实这不过是一场由腹黑皇帝和狡黠恶女定下的一个约盟继而引发的一个故事!人人皆道,将军...

  • 咸宁阎先中房产交易有限公司

    暮夜寒?/?着

    【种田】+【空间】+【温馨】+【致富】+【虐渣】被炸成灰灰的莫颜重生到了古代,成了正...

  • 李维

    悠然世?/?着

    本书出版名《美人思无邪》,天猫购买地址=a1z10.1-b.w11350767-15...