builder.Services.AddCors()
在 ASP.NET Core 中,使用 builder.Services.AddCors()
方法可以配置跨源资源共享(CORS)策略。CORS 是一种安全机制,用于允许一个域上的网页请求另一个域上的资源。默认情况下,浏览器会阻止跨源请求,因此需要通过配置 CORS 来允许这些请求。
配置 CORS 的基本步骤
以下是如何在 ASP.NET Core 应用程序中配置 CORS 的示例:
csharp
var builder = WebApplication.CreateBuilder(args);
// 添加 CORS 服务
builder.Services.AddCors(options =>
{
options.AddPolicy("MyPolicy", policy =>
{
policy.WithOrigins("http://example.com", "http://example.org")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});
// 其他服务配置
builder.Services.AddControllers();
var app = builder.Build();
// 启用 CORS 中间件
app.UseCors("MyPolicy");
// 其他中间件配置
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
app.Run();
配置选项解释
AddPolicy
:定义一个 CORS 策略。你可以为每个策略指定一个名称(如 "MyPolicy").WithOrigins
:指定允许的源。可以是具体的 URL 或使用通配符*
允许所有源。在生产环境中,建议明确指定允许的源以提高安全性.AllowAnyMethod
:允许所有 HTTP 方法(如 GET、POST、PUT、DELETE 等).AllowAnyHeader
:允许所有请求头.AllowCredentials
:允许发送凭据(如 cookies 和 HTTP 认证信息).
注意事项
- 安全性:在生产环境中,尽量避免使用通配符
*
来允许所有源,以防止潜在的安全风险。明确指定允许的源可以提高安全性. - 中间件顺序:
UseCors
必须在UseRouting
和UseAuthorization
之前调用,以确保 CORS 策略在路由和授权之前生效. - 策略选择:你可以根据需要定义多个 CORS 策略,并在不同的控制器或操作上应用不同的策略,通过在控制器或操作上使用
[EnableCors("MyPolicy")]
属性来指定具体策略.
通过合理配置 CORS,你可以确保你的应用程序能够安全地处理跨源请求,同时避免不必要的安全问题.