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) { //... } }
微信扫码查看本文
发表评论