Asp.NetCore跨域配置
引言
能看到这篇文章的对于配置跨域的作用应该都有了解,这里就只说在asp.net core 6下如何配置。
跨域基础配置
1. 添加跨域配置
- 添加默认跨域配置
builder.Services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
- 添加指定配置名称的跨域配置
builder.Services.AddCors(options =>
{
options.AddPolicy("cors1",
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
2. 启用跨域配置
- 添加的是默认跨域配置
app.UseCors();
- 添加的是指定名称的跨域配置
app.UseCors("cors1");
设置允许的来源
这个细讲起来挺麻烦的,不如直接看官方文档。所以就粗略的写一下。
在Asp.NET Core中,可以针对请求源的域名、请求头、http请求方法来判定是否允许跨域,如下代码则是允许所有来源、所有请求头、所有http方法进行跨域访问
//添加跨域
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
});
特殊情况
signalr的跨域配置
为signalr配置跨域时,需要允许Credentials,但.AllowCredentials()和.AllowAnyOrigin()不可同时调用,所以要用以下方法进行配置
services.AddCors(options =>
{
options.AddPolicy("AllowSignalR",
builder =>
{
builder
.SetIsOriginAllowed(_ => true)
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
});

浙公网安备 33010602011771号