dotnet跨域问题之预检请求的重定向

浏览器模式是不允许预检请求的重定向的(redirect for a preflight request)

场景:
前后端分离情况下,不同域名的应用,当前端去dotnet core的web api接口中取数据时,出现了错误,
跨域错误,错误的大概意思就是 redirect is not allowed for a preflight request 预检请求不允许重定向。

原因:
原来以为是在项目中引入的跨域中间件用法有问题,后来经过排查,发现原来,请求没有通过认证,就直接被重定向到了登录页面,即返回了302,没有进入接口。

解决:
可以集成登录,使用户能通过验证

总结:
类似这种Cors跨域的问题,引入中间件一般可以解决。而如果出现这种预检请求的重定向问题,你可以
1.把预检请求变为简单请求
2.在服务端增加过滤,当为预检请求时,返回200

因为预检请求只要返回的不是2XX开头的,都会当做错误处理,所以需要注意下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 .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、付费专栏及课程。

余额充值