概念
跨域问题(Cross-0rigin Resource Sharing,简称CORS)是由浏览器的同源策略(Same-0rigin Policy)引起的。同源策略是一种安全机制,限制了一个网页从不同源加载的资源与当前页面进行交互。同源是指两个页面的协议、域名和端口号都相同。
当一个网页尝试从不同的域名、端口或协议加载资源时,浏览器会根据同源策略阻止这种跨域资源访问。例如,如果一个网页在域名A上加载的JavaScript代码试图向域名B发送Ajax请求,浏览器会阻止这个跨域请求。
发送跨域时,请求是经过了后端,只是后端返回数据之后,被浏览器拦截,不给客户端
配置
通常情况下,服务器端需要设置以下HTTP头部启用CORS:
- ACCess-Control-Allow-Origin:指定允许访问资源的域名,可以是具体的域名或通配符(如)表允许所有域名访问。
- Access-Control-Allow-Methods:指定允许的HTTP请求方法,如GET、POST等。
- Access-Control-Allow-Headers:指定允许的自定义HTTP请求头部。
- Access-Control-Allow-Credentials:指定是否允许发送凭据(如CookieHTTP认证)
// 添加跨域策略
builder.Services.AddCors(option =>
{
option.AddPolicy("CorsPolicy", opt => opt
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod());
});
// 使用跨域策略
app.UseCors("CorsPolicy");