继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题!
之前我写了一篇文章,来解决CORS报错,文中使用到的就是WebMvcConfigurer来进行跨域处理,在最近的项目调试中,我发现这种方法并不能完全覆盖跨域问题,所以我进行了探索,找了了以下两种方法进行补充。
1. 注解
在Controller类或方法上添加@CrossOrigin
注解。
优势: 这样可以很细粒度地控制Cors允许通过的接口。
缺点: 如果是对所有接口进行处理,则需要在每一个Controller类中增加注解。
2. 在过滤器中处理,修改过滤规则
这种方式的缺点和优点刚好和注解的方式相反,可以对大范围接口做处理,但精细化不如注解灵活。
- java版本:
@Component
public class CORSFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse res = (HttpServletResponse) response;res.addHeader("Access-Control-Allow-Credentials", "true");res.addHeader("Access-Control-Allow-Origin", "*");res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {response.getWriter().println("ok");return;}chain.doFilter(request, response);}@Overridepublic void destroy() {}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}
}
- kotlin版本:
@Component
class CORSFilter : Filter {override fun doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) {val res = response as HttpServletResponseres.addHeader("Access-Control-Allow-Credentials", "true")res.addHeader("Access-Control-Allow-Origin", "*")res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN")if ((request as HttpServletRequest).method == "OPTIONS") {response.getWriter().println("ok")return}chain.doFilter(request, response)}override fun destroy() {}override fun init(filterConfig: FilterConfig?) {}
}
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题相关推荐
- Python 库安装问题-用pip安装pyHook3报错的两种常见问题和解决方法
pip install pyHook3 来安装 pyHook3,但是安装报错了. 问题一:缺少swig支持 我们来看报错信息,提示没有找到 swig.exe 这个文件. 原因是没有安装 swig.ex ...
- java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载
不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...
- 不明原因的约束报错的两种处理方式
相信大家在iOS的开发中,经常会遇到一些不明原因的约束警告,有时候按百度到的方法试一下就好了,有时候却不行.而且下一次可能还会出现,比如下面这种约束的报错 Unable to simultaneous ...
- django框架使用mysql报错,及两种解决方法
1.django框架 settings.py文件中部分代码: DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# ...
- DXP出现Un-Routed Net Constraint报错的一种情况和解决方法
1.问题描述 当机型电路的测试时,需要重复画出一款电路及辅助电路系统: 此时,作为超过2层PCB板,内电层可能出现很多悬浮区域,区域之间互相独立不联系,但是这些区域的网络命名是一样的: 例如,上图中, ...
- 415报错,两种解决方法
先确认后台逻辑有没有问题 没有的话考虑一下情况 第一种 查看消息头的响应头和请求头,看是否相同 如果不相同的话,继续修改,增加下面划重点部分 function getAddDirResponse(da ...
- 已经安装了AccessDatabaseEngine.exe还是报错(两种原因)
1.安装(具体安装方式参考百度) 2.原因一:看版本 安装首先看VS中项目是多少版本(32还是64)对应安装 3.原因二:把目标平台(就是项目名字右键找属性)改成x64(主要看自己VS满足那个版本)
- springboot中通过cors协议解决跨域问题
2019独角兽企业重金招聘Python工程师标准>>> 1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现. 针对跨域问题,我们可 ...
- eclipse找不到java方法,Linux启动eclipse报错找不到java环境解决方法
在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 在 linux mint 12 可以在终端顺利启动Eclipse,但是鼠标双击,或者用起 ...
最新文章
- Maven快照机制(SNAPSHOT)
- 【Arduino】按键按下执行不同模式程序
- 计算机网络·详解TCP流量控制,拥塞控制,运输连接管理
- php实训总结00字,说明的比较细的php 正则学习实例
- Server.Transfer方法在页面间传值
- ipv6地址格式_IPV6与IPV4的差异
- python3 enumerate()函数笔记
- 常用SQL语句(增删查改、合并统计、模糊搜索)
- 当心币圈高仿号!也别指望AI,它有心无力
- linux命令大全文档,LINUX命令大全文档
- Linux 增加交换分区
- 基于Java、Jsp实现购物车的功能
- iOS播放器开发之MPMoviePlayerController
- 【问答】区块链遇到Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for
- 《MySQL性能优化和高可用架构实践》阅读总结
- Windows自带压缩文件工具makecab命令详解
- RAID技术规范简介 RAID0 RAID1 RAID2 RAID3 RAID4 RAID5 RAID6 RAID7
- IBM Guardium
- 写出优雅性能的JAVA程序必须遵守的35个原则
- 【小米春招】小米22届春招、23届实习生内推【全岗位】