angular中涉及rxjs请求beego接口跨域问题解决

今天遇到一个调用服务端接口跨域问题,我用本地的angular运行项目,访问本地的beego接口,发现请求接口状态404,并且接口方法还是OPTIONS。一查知道是跨域了,在网上搜索一些跨域访问的方法,发现跨域时访问可以了,但正常post接口却没有调起,也就是OPTIONS访问通了并且访问状态为200成功状态,理应该OPTIONS通了应当要请求正常访问为的post业务接口。

最后找到原因,在此记录下,希望遇到同样问题的同学少走弯路。

原因是angular请求时用户凭证开启了(withCredentials=true)图1,服务端预检OPTIONS返回的头部信息为(Access-Control-Allow-Origin:*),查了相关资料,Access-Control-Allow-Origin信息需要绑定指定的源域名(Access-Control-Allow-Origin:http://localhost:4200)图2,源域名是angular项目域名

 

在beego中 beego.Run()前执行以下代码

    beego.InsertFilter("*", beego.BeforeRouter,

        cors.Allow(&cors.Options{

            // AllowAllOrigins: true, #注意此设置开了后,响应头部信息为*会导致不成功,(Access-Control-Allow-Origin: * )

            AllowOrigins: []string{"http://localhost:4200"}, //绑定源域名

            AllowMethods: []string{"PUT", "PATCH"},

            AllowHeaders: []string{"Origin", "Content-Type"},

            ExposeHeaders: []string{"Content-Length"},

            AllowCredentials: true,

        }))

 

图1

 

 

图2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值