【代码】ASP.NET Core处理跨域请求(Cross-Origin Requests)

2023-06-02 09:40:20  阅读 5709 次 评论 0 条

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)
     {
         //...
     }
 }



微信扫码查看本文
本文地址:https://www.yangguangdream.com/?id=2235
版权声明:本文为原创文章,版权归 编辑君 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?