ASP.NET 核心在授权失败时发送访问控制允许源标头



我的控制器上同时设置了 CORS 和授权。当客户端通过身份验证并发送有效的Authorization标头时,一切正常。如果客户端发送无效的Authorization标头或根本没有标头,则来自服务器的响应是没有Access-Control-Allow-Origin标头的 401,这会在客户端上导致很多问题。

有没有办法强制 asp.net 核心始终发送Access-Control-Allow-Origin标头,即使授权失败?

解决方案是在使用授权之前使用 CORS。

不工作

app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
if (env.IsProduction())
{
app.UseCors(builder =>
{
builder
.WithOrigins("https://example.com")
.AllowAnyMethod()
.AllowAnyHeader();
});
}
else
{
app.UseCors(builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
}

加工

if (env.IsProduction())
{
app.UseCors(builder =>
{
builder
.WithOrigins("https://example.com")
.AllowAnyMethod()
.AllowAnyHeader();
});
}
else
{
app.UseCors(builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
}
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

相关内容

最新更新