.net core 的webapi项目,怎样设置服务端允许跨域

问题背景:
前后端的交互的问题有很多,而跨域就是其中常见的一种。

比如我们要做一个项目,

  1. 前端使用JavaScript(不论你的http请求是通过axios或者jquery.ajax()等)。
  2. 后端是一个 .net core webapi的项目,也就是说是提供http接口的(如 类似“http://localhost:5000/api/values/get/1”这样的接口地),而这样的项目,一般是默认不允许跨域的,也就是说来自其他domain的请求是不予接受的。
  3. 此时如果前端使用了框架,如vue,假如说启动后使用的是 localhost:8080,那么从localhost:8080域发请求到 localhost:5000 域,那么这就是一个跨域,通常会失败。

解决方法

显然的,前端解决或后端解决。

前端解决的方法比如:

  1. jsonp (不细说了)
  2. vue项目里配置proxyTable(其实是代理)

后端解决方法:

  1. 配置后端项目,使之可以接受跨域请求
  2. 后端服务器做一个反向代理 ,接收请求并转发给真正的接口,比如使用nginx来转发。

这里要讲的方法就是 后端解决方法里的第一种,即配置后端项目,使之可接受跨域请求。


原理: 在此 .net core项目里设置一个允许跨域策略,并在相应的控制器或控制器方法中启用

环境:
windows10 64bit
visual studio 2017
.net core 2.2 webapi项目

做法:
1.startup.cs里面设置一个策略
在这里插入图片描述
代码:

 services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                    builder => builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowAnyOrigin()
                    .AllowCredentials());
            });

2.在某个XxxController或具体方法上启用此策略
在这里插入图片描述
既可以在控制器上直接添加此Attribute,也可以在具体的控制器方法上添加,这个很显然。
3.也可写一个控制器基类,直接在基类上添加,则一次即可。
如图
在这里插入图片描述
在这里插入图片描述
RiskBaseController是基类,添加了允许跨域的策略。
AuthController是业务类,直接继承即可。

以上亲测可用。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值