NetCore跨域的实现

本文介绍了如何在ASP.NET Core中配置跨域。首先,需要安装CORS程序包。然后,通过设置CORS服务策略,特别是针对新版CORS中间件的变化,使用AllowAnyOrigin不再生效,需用AllowSpecificOrigins指定源。可以分别在ConfigureServices和Configure方法中配置。此外,还提及了后台版本控制与Vue前端的配合。
摘要由CSDN通过智能技术生成

1.安装程序CORS程序包

使用npm来安装包:Microsoft.AspNetCore.Mvc.Cors

2.配置CORS服务

在 Startup类,ConfigureServices方法里,添加如下代码:
services.AddCors(option=>option.AddPolicy("策略名称", policy => policy.AllowAnyHeader().AllowAnyMethod().AllowCredentials().AllowAnyOrigin()));

新版的CORS中间件已经阻止使用允许任意Origin,即 AllowAnyOrigin 设置了也不会生效,详情如下:

解决办法:使用 WithOrigins 来设置 Origin

policy.AllowAnyHeader().AllowAnyMethod().AllowCredentials().WithOrigins(new []{"http://xxx.xxx.com"});

 

在 Startup类,Configure方法里,添加如下代码:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseCors("策略名称");
    app.UseMvc();
}

其他写法:

当然也可以不在ConfigureServi

在 .NET Core 中解决跨域问题,可以通过中间件 `CorsMiddleware` 来实现。以下是解决跨域问题的步骤: 1. 安装 Microsoft.AspNetCore.Cors 包 可以使用 NuGet 包管理器或者命令行安装 Microsoft.AspNetCore.Cors 包,命令行如下: ``` dotnet add package Microsoft.AspNetCore.Cors ``` 2. 在 `Startup.cs` 中配置 `CorsMiddleware` 在 `ConfigureServices` 方法中添加以下代码: ```csharp services.AddCors(); ``` 在 `Configure` 方法中添加以下代码: ```csharp app.UseCors(builder => { builder.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); }); ``` 上面的代码表示允许所有的来源、头部和方法访问你的 API,你也可以根据实际情况进行更改。 3. 在控制器或者路由方法上添加 `[EnableCors]` 特性 如果你想允许某个控制器或者方法跨域访问,可以在它们上面添加 `[EnableCors]` 特性: ```csharp [EnableCors] public class MyController : ControllerBase { // ... } ``` 或者在方法上: ```csharp [EnableCors] [HttpGet] public IActionResult Get() { // ... } ``` 上面的代码表示允许跨域访问这个控制器或者方法。 4. 限制跨域请求 如果你想限制跨域请求,可以在 `UseCors` 方法中添加以下代码: ```csharp app.UseCors(builder => { builder.WithOrigins("http://example.com") .AllowAnyHeader() .AllowAnyMethod(); }); ``` 上面的代码表示只允许来自 http://example.com 的请求访问你的 API,你也可以根据实际情况进行更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值