跨域请求设置(CORS,Cross‐Origin Resource Sharing) - daniel-qa/Vue GitHub Wiki
跨域请求设置(CORS,Cross-Origin Resource Sharing)
在 ASP.NET Core 中,跨域请求设置(CORS,Cross-Origin Resource Sharing)允许你指定哪些外部域可以访问你的应用程序。
这对于支持跨域的 API 请求和资源共享非常重要。以下是你提供的代码中的 CORS 设置的详细解释,以及如何根据需要配置和管理 CORS 策略。
- CORS 配置代码
在你提供的 Startup 类中,CORS 配置代码如下:
public void ConfigureServices(IServiceCollection services)
{
// 设置 CORS 策略
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://teammodelos-test.chinacloudsites.cn",
"https://www.teammodel.cn", "https://localhost:5001",
"http://localhost:5000", "http://localhost:64524",
"https://localhost:44341", "https://localhost:8888", "http://localhost:8888")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
// 其他服务配置...
}
- CORS 配置解释
1 .添加 CORS 策略
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://teammodelos-test.chinacloudsites.cn",
"https://www.teammodel.cn", "https://localhost:5001",
"http://localhost:5000", "http://localhost:64524",
"https://localhost:44341", "https://localhost:8888", "http://localhost:8888")
.AllowAnyHeader()
.AllowAnyMethod();
});
});
AddCors: 通过 IServiceCollection 的 AddCors 方法注册 CORS 服务。
AddPolicy: 定义一个名为 MyAllowSpecificOrigins 的 CORS 策略。策略中指定了允许的源(WithOrigins)、允许的请求头(AllowAnyHeader)和允许的方法(AllowAnyMethod)。
2 .使用 CORS 策略
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors(MyAllowSpecificOrigins); // 使用定义的 CORS 策略
// 其他中间件配置...
}
UseCors: 在请求管道中使用定义的 CORS 策略。将 MyAllowSpecificOrigins 策略应用于请求处理流程。
- CORS 配置选项
在配置 CORS 策略时,可以使用以下选项来控制允许的行为:
WithOrigins: 允许指定的源访问 API。例如,builder.WithOrigins("https://example.com") 允许来自 https://example.com 的请求。
AllowAnyHeader: 允许任何请求头。如果你想限制允许的请求头,可以使用 WithHeaders 方法,例如 builder.WithHeaders("Content-Type", "Authorization")。
AllowAnyMethod: 允许任何 HTTP 方法。如果你想限制允许的方法,可以使用 WithMethods 方法,例如 builder.WithMethods("GET", "POST")。
AllowCredentials: 允许发送凭据(如 cookies 和 HTTP 认证信息)。默认为禁用,如果需要启用,可以使用 builder.AllowCredentials()。
SetIsOriginAllowed: 允许动态确定哪些源可以访问。
例如,你可以使用 builder.SetIsOriginAllowed(origin => origin.StartsWith("https://example.com")) 来只允许 https://example.com 下的子域。