ASP.NET Core Web API - Blazor WASM - 一段时间后发生 CORS 错误

问题描述 投票:0回答:1

我有 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 主机切换,它再次工作。那就像一周前一样,现在我也遇到了同样的问题。

我已经尝试过这些事情:

  • 更改指定前端 URL 的 CORS
  • 重新启动应用程序池
  • 清理应用程序池
  • 清除缓存
  • 添加自定义策略并使用
    [EnableCors(PolicyName="name"]
  • 在控制器中启用
  • 使用
    [DisableCors]
  • 在控制器中禁用 CORS

我在这里看到了很多 QA 以及不同的方法。

我有什么遗漏的吗?

也是第一次使用这个:

app.UseCors(x => x
       .AllowAnyMethod()
       .AllowAnyHeader()
       .SetIsOriginAllowed(origin => true)
       .AllowCredentials());

然后我像我一开始说的那样切换到构建器,但直到我切换主机和url才工作。

提前谢谢您

c# blazor cors webassembly .net-8.0
1个回答
0
投票

您应该设置允许的请求来源。

app.UseCors(x => x
       .AllowAnyMethod()
       .AllowAnyHeader()
       .WithOrigins("https://frontend.com")
       .AllowCredentials());

您可以在文档中阅读有关在 ASP.NET Core 中启用跨源请求的更多信息。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.