我的控制器上同时设置了 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();