【踩坑记录】SpringBoot跨域配置不生效
问题复现:
明明在拦截器里配置了跨域,就是不生效,使用PostMan等后端调试工具调试,均正常,Response中有Access-Control-Allow-Origin: *,这个Header,但是前端一直反馈,通过浏览器js代码fetch报跨域问题。如图:

嗯,,,看看浏览器请求:

确实在报CORS错误
问题分析:
看到这个浏览器请求对http比较了解的同学可能已经猜到大概了,对于非Simple请求,浏览器会先发送一次OPTIONS请求,坑就在这里,如果我们用了自定义的header,就不是Simple请求,意味着会发送一次OPTIONS,就是上面浏览器调试工具中的preflight,就是这个请求出现了跨域问题。继续分析后端代码,问题出现了:
本次项目安全认证做在了Filter中,其实这个没问题,好多项目都是在Filter中做的安全认证,不过,它的CORS配置配在了拦截器中(Interceptor),而且在权限认证Filter认证失败时直接返回,导致没有经过拦截器,直接返回了。不过这种情况也正常,因为即使安全认证没通过的请求没经过过滤器直接返回了,那正常能通过安全认证的请求应该正常返回跨域啊,为什么通过postman请求一切正常,浏览器却报错呢?原因就是我们上面提到的,后端没有对OPTIONS请求做单独处理,意味着OPTIONS请求也会经过安全认证的Filter,而浏览器发出的OPTIONS请求是没有携带安全认证Header的,所以必然认证失败,然后直接返回,没有加CORS的Header,导致请求本身能访问,但preflight过不了安全认证Filter访问不了,直接返回跨域问题。
问题解决:
找到原因,剩下的就比较简单了,把CORS配置放到Filter上,并且把优先级提高,起码要在AuthFilter之前,再测试没问题啦
【踩坑记录】SpringBoot跨域配置不生效的更多相关文章
- Flask框架踩坑之ajax跨域请求
业务场景: 前后端分离需要对接数据接口. 接口测试是在postman做的,今天才开始和前端对接,由于这是我第一次做后端接口开发(第一次嘛,问题比较多)所以在此记录分享我的踩坑之旅,以便能更好的理解,应 ...
- 我的踩坑之旅-跨域问题引发bug
场景: 由于业务原因需要在请求中添加一个信息表明请求的source,经过一轮方案的评审,大家共同决定把这source信息存放在消息header中.前端小伙伴听完之后心里暗自偷笑:就一行的代码的事,请求 ...
- springboot跨域配置
前言: 当它请求的一个资源是从一个与它本身提供的第一个资源的不同的域名时,一个资源会发起一个跨域HTTP请求(Cross-site HTTP request).比如说,域名A ( http://dom ...
- Springboot跨域配置的坑
部分时间需要加上crossOrigin
- 跨域原因及SpringBoot、Nginx跨域配置
目录 概述 简单请求 跨域解决方案 概述 SpringBoot跨域配置 Nginx跨域配置 概述 MDN文档 Cross-Origin Resource Sharing (CORS) 跨域的英文是Cr ...
- SpringBoot 配置CORS处理前后端分离跨域配置无效问题解析
前言 浏览器有跨域限制,非同源策略(协议.主机名或端口不同)被视为跨域请求,解决跨域有跨域资源共享(CORS).反向代理和 JSONP的方式.本篇通过 SpringBoot 的资源共享配置(CORS) ...
- No 'Access-Control-Allow-Origin' header: 跨域问题踩坑记录
前言 前两周在服务器上部署一个系统时,遇到了跨域问题,这也不是第一次遇到跨域问题了,本来以为解决起来会很顺利,没想到解决过程中遇到了很多坑,所以觉得有必要写一篇博客记录一下这个坑. 问题产生原因 本来 ...
- SpringBoot + Shiro + shiro.ini 的踩坑记录
0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...
- SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录
Spring boot +Spring Security + Thymeleaf认证失败返回错误信息踩坑记录 步入8102年,现在企业开发追求快速,Springboot以多种优秀特性引领潮流,在众多使 ...
- Springboot统一跨域配置
前言:跨域是什么? 要知道跨域的概念,我们先明确怎样算是同一个域: 同一个域指的是同一协议,同一ip,同一端口 如果这三同中有一者不同就产生了跨域. 在做前后端分离的项目中,通过ajax请求后台端口时 ...
随机推荐
- docker-compose部署SpringCloud
1.安装 docker-compose 将 docker-compose-Linux-x86_64 传到 /usr/local/bin 目录下,并改名为 docker-compose 2.设置权限 ...
- Mac 设置 JAVA_HOME
Mac /System/Library/Frameworks/JavaVM.framework/Home/bin/java: No such file or directory 查找JAVA_HOME ...
- pip 的高阶玩法
pip 的高阶玩法 pip 应该是大家最熟悉的 Python 包安装与管理工具了,但是除了pip install 这个最常用的命令,还有很多有用的玩法.这里就介绍几个我平时会用到的,希望对大家有所帮助 ...
- mybatis使用oracle进行添加数据的心得
本次博主主要进行oralce数据库开发,好久不用oracle,有很多知识点也忘的差不多了,本次主要是复习一下工作中主要使用的一些sql语句编写: 查询 查询语句都是正常的,但是需要注意的是oracle ...
- ME51N 创建采购申请
1业务说明 当寻源后,将寻源结果汇总,并创建采购申请,之后据此创建采购订单. 此文档使用BAPI:BAPI_REQUISITION_CREATE创建采购申请 2前台实现 事务代码:ME51N 3代码实 ...
- ME5A报表增强
一.ME5A报表新增长文本字段 结构中添加字段 在该方法下添加对应的取值逻辑 二.ME5A点击科目分配按钮界面添加字段 结构中添加字段 对应位置写取值逻辑 定期更文,欢迎关注 TRANSLATE wi ...
- 为什么 Go 和 Rust 语言都舍弃了继承?
为什么go和rust语言都舍弃了继承? 舍弃了 Class 舍弃或弱化子类型 类的继承是一段儿弯路 OO 发明了继承,然后发现真正有意义的是 interface 的组合(更准确的说,是 Product ...
- 2018年蓝桥杯B组C/C++国赛题解
1.换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. 小明有点强迫症,他坚持要求200元换出 ...
- 【驱动】以太网扫盲(四)phy驱动link up流程分析
1. 简介 在调试网口驱动的过程中发现phy芯片的驱动框架结构还有点复杂,不仔细研究的话还不好搞懂,另外百度到的资料也不够全面,这篇就总结梳理一下这方面的知识. 我们知道一个 phy 驱动的原理是非常 ...
- Missing return type on function. eslint(@typescript-eslint/explicit-module-boundary-types))
setup报错: 解决办法: