postman跨域测试_spring boot2+oauth2跨域问题解决办法

引言

今天在做springboot2+oauth2整合的时候遇到一个很头痛的问题。ajax跨域发送options请求,服务器401问题。

开发环境

前端:axios.js 端口:8081

后端:springboot2+oauth2 端口8080

问题描述

1,在搭建好服务器的oauth认证服务后,用postman测试结果都ok。

393671db485836db5cbf76ab3f64c061.png

2,然后,在前端用以下代码测试。

388b9146e157079b271c1ea4ca41b4da.png

报错如下:

fbe2c8744b5aeffd16b586c83fe85156.png

因为是前后分离的环境,因此存在这跨域的问题,每次客户端的任何请求,都会先发送一个options请求,但是此时服务器可能不允许options请求方式,因此,服务器直接报401,意思是未授权。

解决思路

1,检查请求参数以及请求头对不对,经过检查绝对正确。

2,因为之前做过spring+security+oauth2,所以猜测这可能是跨域导致的问题。因此以为和以前一样,给整个应用加一个corsfilter就可以了。

6af29cc33d40cd38566a5dd041d428e4.png

结果,万万没有想到的是,加上了还是401,根本没有经过此过滤器。

所以,接下来要做的事情是,需要在执行spring secruity 过滤器链之前就要执行我们的corsfilter,否则加上了也没用。

最终解决

在corsfilter上,加上注解spring boot提供的注解@Order(Ordered.HIGHEST_PRECEDENCE),意思是优先执行。

acd30add4172eea2ea65148a39f7b8c0.png

好了,这样就可以保证,最先执行我们的corsfilter了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值