Asp.net Core中的CORS

1、CORS定义

CORS是目前主流的跨域解决机制,它是一个W3C标准,全称是”跨域资源共享(Cross-origin resource sharing)”。

CORS标准允许在以下场景中进行跨域请求:

  • ajax和fetch跨域请求
  • css中通过@font-face使用跨域字体资源
  • 使用drawImage将Image/Video画面绘制到canvas

浏览器向后端发起请求获取数据,每个请求都是http或https,浏览器会对比如下两点,如果有差异,则视为跨域:

  • 浏览器地址栏:协议、域名、端口
  • 浏览器发起请求:协议、域名、端口

2、CORS中的cookie

对于跨域情况,浏览器不会主动携带cookie用于身份验证,需要人工设置特殊标志位

3、asp.net core中支持CORS

除了浏览器端需要支持CORS外,服务器端也需要支持这种跨域访问。

asp.net core默认支持CORS,但需要添加Service

例如:添加一个独立的Policy,允许44440端口的网址可以访问当前站点

builder.Services.AddCors(options => {
    options.AddPolicy(name: "AngularVisit",
        policy =>
    {
        policy.WithOrigins("http://localhost:44440");
    });
});

之后需要启用CORS,并应用此Policy

app.UseCors("AngularVisit");

这样就可以实现CORS。