1、注册Policy
在ASP.NET Core中,需要 Microsoft.AspNetCore.Cors 这个包。ASP.NET Core 2.0 以上版本 已经包含了这个包,所以无需安装。
1.0版本可以使用以下命令安装CLI
dotnet add package Microsoft.AspNetCore.Cors
在Startup.cs(3.0以上是Program.cs)注册Cors
//...
_builder.Services.AddCors(options =>
{
// CorsPolicy 是自訂的 Policy 名稱
options.AddPolicy("CrosPolicy", policy =>
{
policy.WithOrigins("http://localhost:5000")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
//...WithOrigins
设置允许跨域的来源,多个可以用英文逗号隔开。
AllowAnyHeader
允许所有的Header,如果要限制Header,可使用 WithHeaders ,多个可以用英文逗号隔开
AllowAnyMethod
允许所有的请求方式,如果要限制,可以使用 WithMethods ,多个可以用英文逗号隔开
AllowCredentials
浏览器不会发送浏览器凭证(如:Cookies),如果 JavaScript 使用 withCredentials = true 把CORS的凭证带入,ASP.NET Core 这边也要允许,才可以正常使用
套用这个Policy
有两种方式,一种是全局,一种是局部
全局套用:
Startup.cs(3.0以上是Program.cs)调用 UseCors 注册,并且传入 Policy 的名称。
//...
app.UseCors("CorsPolicy");
//...局部套用:
在 Controller 或者 Action 中定义Attribute就可以啦~
Controller 中:
//...
[EnableCors("Policy Name")]
public class UserController : BaseController
{
//...
}Action 中:
//...
public class UserController : BaseController
{
//...
[EnableCors("Policy Name")]
public async Task<CodeMessageDTO> toLogin([FromBody] UserParam param)
{
//...
}
}
微信扫码查看本文
发表评论