查看官方文檔
https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-2.2
分兩部分處理跨域
- ConfigureServices裏添加
services.AddCors(options =>
{
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com");
});
});
- Configure裏添加
app.UseCors(MyAllowSpecificOrigins);
問題1:
前端調試是還是存在跨域問題
解決(谷歌爲例):
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com","http://192.168.66.149:81");
});
或者這裏可以之前全部放開域檢測
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));;
});
問題2:
不全部放開域檢測,不同的action跨域控制問題
官方文檔說[EnableCors]寫在方法上面
這裏說明一下
當ConfigureServices按照上面官方文檔寫時,action最上一行不需要寫[EnableCors]也可以
當ConfigureServices這麼寫時
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("http://example.com",
"http://192.168.66.149:81");
});
options.AddPolicy(MyAllowSpecificOrigins,
builder =>
{
builder.WithOrigins("http://example.com",
"http://www.contoso.com","http://192.168.66.149:81");
});
});
[EnableCors]代表默認策略
[EnableCors("_myAllowSpecificOrigins")]
這樣區別兩種策略
如果方法前沒有寫默認的是[EnableCors("_myAllowSpecificOrigins")]