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。