我有 ASP.NET Core 8 Web API 和 .NET 8 上的 Blazor Wasm。
在 API 中,程序如下所示。
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(policy =>{policy.AllowAnyMethod().AllowAnyHeader().SetIsOriginAllowed(origin => true).AllowCredentials();});
});
...
var app = builder.Build();
...
app.UseCors();
我已部署,一切正常。大约一周后,我开始收到此错误:
从源“https://frontend.com”获取“https://backend.net/api/packages/fullpackage”的访问已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头存在于所请求的资源上。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。
当我查看预检时,我明白了。
access-control-allow-credentials:真正的access-control-allow-headers: 授权,内容类型访问控制允许方法:POST
请求得到这个。
URL:https://backend.net/api/packages/fullpackage方法:POST代码: 500 内部服务器错误指令:strict-origin-when-cross-origin
它发生过一次,但我真的需要在线,在到处查看后,我尝试从 API 主机切换,它再次工作。那就像一周前一样,现在我也遇到了同样的问题。
我已经尝试过这些事情:
[EnableCors(PolicyName="name"]
[DisableCors]
我在这里看到了很多 QA 以及不同的方法。
我有什么遗漏的吗?
也是第一次使用这个:
app.UseCors(x => x
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowed(origin => true)
.AllowCredentials());
然后我像我一开始说的那样切换到构建器,但直到我切换主机和url才工作。
提前谢谢您
您应该设置允许的请求来源。
app.UseCors(x => x
.AllowAnyMethod()
.AllowAnyHeader()
.WithOrigins("https://frontend.com")
.AllowCredentials());
您可以在文档中阅读有关在 ASP.NET Core 中启用跨源请求的更多信息。
希望这有帮助