继承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 两种方式稳定解决跨域问题相关推荐

  1. Python 库安装问题-用pip安装pyHook3报错的两种常见问题和解决方法

    pip install pyHook3 来安装 pyHook3,但是安装报错了. 问题一:缺少swig支持 我们来看报错信息,提示没有找到 swig.exe 这个文件. 原因是没有安装 swig.ex ...

  2. java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载

    不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...

  3. 不明原因的约束报错的两种处理方式

    相信大家在iOS的开发中,经常会遇到一些不明原因的约束警告,有时候按百度到的方法试一下就好了,有时候却不行.而且下一次可能还会出现,比如下面这种约束的报错 Unable to simultaneous ...

  4. django框架使用mysql报错,及两种解决方法

    1.django框架 settings.py文件中部分代码: DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# ...

  5. DXP出现Un-Routed Net Constraint报错的一种情况和解决方法

    1.问题描述 当机型电路的测试时,需要重复画出一款电路及辅助电路系统: 此时,作为超过2层PCB板,内电层可能出现很多悬浮区域,区域之间互相独立不联系,但是这些区域的网络命名是一样的: 例如,上图中, ...

  6. 415报错,两种解决方法

    先确认后台逻辑有没有问题 没有的话考虑一下情况 第一种 查看消息头的响应头和请求头,看是否相同 如果不相同的话,继续修改,增加下面划重点部分 function getAddDirResponse(da ...

  7. 已经安装了AccessDatabaseEngine.exe还是报错(两种原因)

    1.安装(具体安装方式参考百度) 2.原因一:看版本 安装首先看VS中项目是多少版本(32还是64)对应安装 3.原因二:把目标平台(就是项目名字右键找属性)改成x64(主要看自己VS满足那个版本)

  8. springboot中通过cors协议解决跨域问题

    2019独角兽企业重金招聘Python工程师标准>>> 1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现. 针对跨域问题,我们可 ...

  9. eclipse找不到java方法,Linux启动eclipse报错找不到java环境解决方法

    在Linux mint下,前几天还用得很好的的eclipse,今天开机不知为什么这样. Eclipse 3.6 在 linux mint 12 可以在终端顺利启动Eclipse,但是鼠标双击,或者用起 ...

最新文章

  1. Maven快照机制(SNAPSHOT)
  2. 【Arduino】按键按下执行不同模式程序
  3. 计算机网络·详解TCP流量控制,拥塞控制,运输连接管理
  4. php实训总结00字,说明的比较细的php 正则学习实例
  5. Server.Transfer方法在页面间传值
  6. ipv6地址格式_IPV6与IPV4的差异
  7. python3 enumerate()函数笔记
  8. 常用SQL语句(增删查改、合并统计、模糊搜索)
  9. 当心币圈高仿号!也别指望AI,它有心无力
  10. linux命令大全文档,LINUX命令大全文档
  11. Linux 增加交换分区
  12. 基于Java、Jsp实现购物车的功能
  13. iOS播放器开发之MPMoviePlayerController
  14. 【问答】区块链遇到Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for
  15. 《MySQL性能优化和高可用架构实践》阅读总结
  16. Windows自带压缩文件工具makecab命令详解
  17. RAID技术规范简介 RAID0 RAID1 RAID2 RAID3 RAID4 RAID5 RAID6 RAID7
  18. IBM Guardium
  19. 写出优雅性能的JAVA程序必须遵守的35个原则
  20. 【小米春招】小米22届春招、23届实习生内推【全岗位】

热门文章

  1. 机房收费系统【VB版】——上下机
  2. Python多线程调试
  3. tf.shape()
  4. Http请求之优雅的RestTemplate
  5. Springboot前后端分离上传、下载压缩包、查看文件
  6. 合肥工业大学—SQL Server数据库实验九:视图的定义与使用
  7. NVIDIA DRIVE AGX开发工具包
  8. 计算机视觉一些项目实战技术(续)
  9. 自动驾驶的分级和行业现状
  10. 第二个Python程序:if,for,while,输出乘法口诀表