跨域问题之过滤器的坑

跨域问题在我们实际开发中前后端分离项目中会经常碰到。一般就是加个跨域注解,或者增加全局配置来解决。但今天说说项目中碰到的一种跨域的形式。

首先我们要了解请求可以分为两种请求:简单请求非简单请求。

重点是非简单请求,什么是非简单请求?如果一个请求是跨域请求,然后它有自定义的请求头(比如带了token),或者请求头中的content-type是application/x-www-form-urlencoded,multipart/form-data,text/plain之外的格式。这些就是非简单请求。

非简单请求在请求前会先发出一个options请求去校验一下。这个时候,我们加的跨域注解或者跨域配置文件,会帮我们自动做一些操作。具体的比如往head里插入一些对应字段来标识这是允许跨域访问的信息。

 

这个时候出问题了,项目中往往我们会用过滤器去检验身份。而options请求里是不会带token的,自然而然的走身份校验失败的逻辑,而浏览器根据options请求的结果去判断,发现head里没有所约定的字段,就会报跨域问题,然后你去看对应接口,发现有跨域注解,然后就莫名其妙的。相信大家看到这里也知道为什么会报跨域了。

解决方法也很简单,在拦截那里加了行判断,如果是options请求就直接放行,这样请求就会到接口里去,接口的跨域注解会自动帮我们做处理。

ps:注意大小写和单词

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值