在ASP.NET Core 2.2 API上,我在ConfigureServices上具有以下内容:
services.AddCors(x => {
x.AddPolicy("AllowAll", y => y.AllowAnyMethod().AllowAnyOrigin().AllowAnyHeader().AllowCredentials());
});
并且在配置方法上,我有:
application.UseCors("AllowAll");
我通过域将API发布到Azure:
https://api-demo.domain.com
并且访问API的Web应用程序位于:
https://demo.domain.com
但是我在Web应用程序上收到一条错误消息:
Origin https://demo.domain.com不允许被Access-Control-Allow-Origin使用。由于访问控制检查,XMLHttpRequest无法加载https://api-demo.domain.com/v1.0/posts。无法加载资源:Access-Control-Allow-Origin不允许使用原点https://demo.domain.com。
在这种情况下,AllowAll不能工作吗?我想念什么?
ASP.NET Core 2.2不支持将AllowAllOrigins
和AllowCredentials
(docs)都合并:
指定
AllowAnyOrigin
和AllowCredentials
是不安全的配置,可能会导致跨站点请求伪造。当同时使用两种方法配置应用程序时,CORS服务将返回无效的CORS响应。
A 安全配置将使用WithOrigins(...)
限制允许的来源:
services.AddCors(x =>
{
x.AddPolicy("AllowAll", y =>
y.WithOrigins("https://demo.domain.com")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});