拦截器 跨域问题

在项目中使用token取代session实现登录鉴权时,Vue中每次请求都会带有携带token的请求头Authorization
此时前端会发送两次请求,在跨域请求中,浏览器会首先发送一个预检请求(Preflight Request)来检查服务器是否允许跨域请求。
预检请求是一个 OPTIONS 请求,其中包含一个 Access-Control-Request-Headers 头部信息,用于列出实际请求中会包含的请求头。服务器需要正确响应预检请求,并在响应中包含 Access-Control-Allow-Headers 头部信息,以允许实际请求中包含列出的请求头。
如果在预检请求中使用拦截器检查请求头信息,但只有第一次预请求会被拦截,可能是因为您的服务器没有正确响应预检请求。在预检请求中,浏览器会发送一个 Access-Control-Request-Headers 头部信息来列出实际请求中会包含的请求头。
如果服务器没有正确响应预检请求,即没有包含 Access-Control-Allow-Headers 头部信息,浏览器就会认为服务器不允许实际请求中包含列出的请求头,从而不会发送实际请求,也就不会触发拦截器。

解决方法:
发现,只需要我把这个请求过滤掉即可,让它可以实际请求,使得我的自定义请求头 - 特定的请求头(access-control-request-headers=content-type,headeruserid,headerusertoken)可以接收到我就可以进行判断了。

if (“OPTIONS”.equals(request.getMethod().toUpperCase())) {
return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值