java后端通过Filter过滤器解决跨域问题
此方案只需服务端的代码修改
因为现在要前后端分离开发,那必不可免的会出现跨域问题,以下是自己实际测试过的有效代码:
步骤:
一、在 web.xml文件中添加
<!-- 2019-01-15 解决跨域问题 --><filter><filter-name>crossFilter</filter-name><filter-class>com.sx.test.controller.CorsFilter</filter-class></filter><filter-mapping><filter-name>crossFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
二、在自己的项目中创建 CorsFilter.java文件
package com.sx.test.controller;import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;import javax.servlet.Filter;
import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebFilter(filterName = "CORSFilter", urlPatterns = {"/*"}) @Order(value = 1) @Configuration public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException { System.out.println("Filter 过滤器 执行 了"); HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; // 响应标头指定 指定可以访问资源的URI路径 response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); //响应标头指定响应访问所述资源到时允许的一种或多种方法 response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); //设置 缓存可以生存的最大秒数 response.setHeader("Access-Control-Max-Age", "3600"); //设置 受支持请求标头 response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); // 指示的请求的响应是否可以暴露于该页面。当true值返回时它可以被暴露 response.setHeader("Access-Control-Allow-Credentials","true"); filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } }
注:
上面代码中的注解作用:
@WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。@WebFilter常用属性:
@Order 注解主要用来控制配置类的加载顺序,其value为正整数,值越小优先度越高
@Configuration 从Spring3.0,@Configuration用于定义配置类
对于setHeader() 响应头相关的API 详解: https://cloud.tencent.com/developer/section/1189894
如果对你有帮助的话给评论个 1 对我鼓励下,如果有更好的方法或资源请不吝赐教
转载于:https://www.cnblogs.com/fss93/p/10275828.html
java后端通过Filter过滤器解决跨域问题相关推荐
- vue 解决跨域 调试_vue+Java后端进行调试时解决跨域问题的方式
今天在开发过程中遇到一个问题,拿到了一套vue代码,计划对这套代码的部分样式进行调整,Java后端代码已经写好并且部署到了线上.这时命令行运行vue项目时访问会受限,取不下数据来,遇到了跨域访问失败的 ...
- 前后端分离,如何解决跨域问题
前后端分离,如何解决跨域问题 跨域 1.Jsonp,只能使用get提交,传输数据量有限 2.CORS(Corss-origin resource sharing)跨域资源共享,支持post提交 ...
- 使用 Nginx 部署前后端分离项目,解决跨域问题
前后端分离这个问题其实松哥和大家聊过很多了,上周松哥把自己的两个开源项目部署在服务器上以帮助大家可以快速在线预览(喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了 ...
- 前后端分离,如何解决跨域(代理模式)、路由拦截(进入页面需要登录)以及请求拦截(登录TOKEN失效)等问题(初学者)
前端时间项目需要发布一个较大的版本,工作比较忙,加了好多个晚上的班,感觉自己有点缺氧了.最近稍微闲下来了,顺便调休了三天,刚刚给家里来了个大扫除,看着这干干净净的小家,心里顿时舒服了很多. 下面进入正 ...
- Springboot 解决跨域的四种姿势
Springboot 解决跨域的四种姿势 姿势一 实现WebMvcConfigurer#addCorsMappings的方法 import org.springframework.context.an ...
- Vue项目生产环境解决跨域问题
一.前言 第一次写vue项目,开发完成.打包上线后,一访问,发现访问后端的请求全部报404.我就纳闷了,跨域问题我已经解决了,怎么就报错了.查阅资料,得知我解决的跨域仅适用于开发环境. ememem. ...
- vue前后端分离项目http请求携带cookie设置,java过滤器filter设置允许跨域
最近使用VUE开发前后端分离,登录后,后端存入用户信息到session,前端http axios异步请求获取不到sesion,查看http请求头发现http headers未携带cookie, 然后查 ...
- vue+Java后端进行调试时如何解决跨域问题
今天在开发过程中遇到一个问题,拿到了一套vue代码,计划对这套代码的部分样式进行调整,Java后端代码已经写好并且部署到了线上.这时命令行运行vue项目时访问会受限,取不下数据来,遇到了跨域访问失败的 ...
- java后端解决跨域问题
首先我门要知道什么是跨域: 跨域是指 不同域名之间相互访问.跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制. 也就是如果在A网站中 ...
最新文章
- 计算机书籍-机器学习预测分析Go语言实现
- excel查找空值快捷键_Excel工资表怎么做?3分钟学会利用函数生成工资表
- 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
- 只读副本和Spring Data第4部分:配置只读存储库
- STM32基于AD5663的UV灯电压控制
- Weblogic12c T3 协议安全漏洞分析【CVE-2020-14645 CVE-2020-2883 CVE-2020-14645】
- Lightroom 如何安装lrplugin格式插件
- VMware vSphere 功能特性比较 vsphere 6.5/6.7/7.0
- 【基于JavaEE的医院药品管理系统的设计与实现】
- Android之模拟网络请求返回http 502、400、401、402错误码
- 解决在Word安装Mendeley失败,提示“错误429:activex部件不能创建对象“问题
- 美通企业日报 | 凯悦集团将在华新开5家奢华酒店;铁姆肯庆祝成立120周年
- 记虚拟机装黑苹果踩坑及步骤
- 这本书非常值得一读!《微习惯》读后感
- CentOS7 安装学之思开源考试系统Mysql版
- 三年磨一剑大话数据结构——数据结构起源、概念和术语
- Vuex 4源码学习笔记 - 做好changelog更新日志很重要(十)
- oracle密码带@!,oracle的密码中带@符号
- python处理心电图_【技术博客】Python玩转信号处理与机器学习入门
- visibility
热门文章
- ARCGIS知乎上的好文章
- 【luogu1709】小B的询问 - 莫队
- ireport5.6+jasperreport6.3开发(四)--以javabean为基准的报表开发(ireport)
- 条款34:区分接口继承和实现继承(Different between inheritance of interface and inheritance of implemenation)...
- Android开发之 shape的使用
- 命令行添加删除tomcat服务
- 订单管理中根据订单来源批量修改服务部门
- jstl-按照html的形式输出至页面
- C# - 企业框架下的存储过程输出参数
- 如何关闭子线程?征集析构函数与多线程的讨论!