最近使用ssm开发了一个项目,为了项目的开发速度,采用的是前后端同时开发,所以前端文件没有集成在项目中,最后在调试时涉及到了跨域。跨域的解决方法很多,我采用的是最简单的一种,代码如下:

step 1 新建一个过滤器filter

package com.xxxx.xxxxx;import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class SimpleCORSFilter implements Filter {@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;response.setHeader("Access-Control-Allow-Origin", "*");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Headers", "x-requested-with");chain.doFilter(req, res);}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}

step 2 然后在xml中配置

<filter>  <filter-name>cors</filter-name>  <filter-class>com.ssm.web.filter.SimpleCORSFilter</filter-class>
</filter>
<filter-mapping>  <filter-name>cors</filter-name>  <url-pattern>/*</url-pattern>
</filter-mapping>

2018.08.07更新

由于项目的升级,感觉以前的filter不满足实际需求,故而进行扩展升级

package com.xxx.xxx;import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@Component
public class CORSFilter implements Filter {// 存放跨域的白名单private String[] permitUrl;@Overridepublic void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res;HttpServletRequest request = (HttpServletRequest) req;String myOrigin = request.getHeader("origin");boolean isValid = false;for (String ip : permitUrl) {if (myOrigin != null && myOrigin.equals(ip)) {isValid = true;break;}}response.setContentType("textml;charset=UTF-8");response.setHeader("Access-Control-Allow-Origin", isValid ? myOrigin : "null");response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");response.setHeader("Access-Control-Max-Age", "3600");response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");response.setHeader("Access-Control-Allow-Credentials", "true");response.setHeader("P3P", "CP=\"NON DSP COR CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa HISa TELa OTPa OUR UNRa IND UNI COM NAV INT DEM CNT PRE LOC\"");response.setHeader("XDomainRequestAllowed", "1");chain.doFilter(req, res);}// 初始化方法,这里的permitUrl是在web.xml中配置的@Overridepublic void init(FilterConfig filterConfig) throws ServletException {String urls = filterConfig.getInitParameter("permitUrl");if (urls != null) {urls = urls.replaceAll("\\n", "").replaceAll("\\r", "").replaceAll("\\t", "");}if (!"".equals(urls) && urls != null) {permitUrl = urls.split(",");}if (permitUrl != null) {for (int i = 0; i < permitUrl.length; i++) {permitUrl[i] = permitUrl[i].trim();}}}// 销毁方法@Overridepublic void destroy() {}}

web.xml中配置(这里的permitUrl中的value就是你项目允许的ip地址,不允许的将访问不到)

<filter><filter-name>cors</filter-name><filter-class>com.xxx.xxx.CORSFilter</filter-class><init-param><param-name>permitUrl</param-name><param-value>http://192.168.1.51:3000,http://192.168.1.51:8020,http://www.baidu.com:8084</param-value></init-param></filter><filter-mapping><filter-name>cors</filter-name><url-pattern>/*</url-pattern></filter-mapping>

在全栈的道路上,积极向上、成熟稳重、谦虚好学、怀着炽热的心向前方的走得更远。

原文链接:https://www.cnblogs.com/DDgougou/p/8484389.html

SSM项目跨域访问处理(含白名单处理)相关推荐

  1. ssm项目解决AJAX跨域,ssm项目跨域访问

    最近使用ssm开发了一个项目,为了项目的开发速度,采用的是前后端同时开发,所以前端文件没有集成在项目中,最后在调试时涉及到了跨域.跨域的解决方法很多,我采用的是最简单的一种,代码如下: 新建一个过滤器 ...

  2. 详解浏览器跨域访问的几种办法

    摘要: 本文讨论web前端安全问题以及应对措施,浏览器同源策略以及对资源跨域访问的几种解决方案 本文分享自华为云社区<Web安全和浏览器跨域访问>,原文作者:kg-follower   . ...

  3. 使用自开发的代理服务器解决 SAP UI5 FileUploader 上传文件时遇到的跨域访问错误试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  4. Web应用跨域访问解决方案

    Web应用跨域访问解决方案 Web应用的跨域访问解决方案 Web跨域访问解决方案 做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与 ...

  5. Web应用跨域访问及单点登录解决方案汇总

    做过跨越多个网站的Ajax开发的朋友都知道,如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容,如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题.Ajax的跨域访问问题是现有的Aj ...

  6. Django 多方式实现跨域访问

    一.什么是跨域 1.1 跨越介绍 跨域,是指浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制. 这里说明一下,无法跨域是浏览器对于用户安全的考虑 ...

  7. nginx实现跨域访问

    跨域概念 简单来说:两个url只要协议.域名.端口有任何一个不同,都被当作是不同的域,相互访问就会有跨域问题. 案例 例如:在开发前后端完全分离的系统中,服务端代码属于一个工程,前端代码属于另一个工程 ...

  8. 新蜂商城(newbee-mall-api)部分接口实验,跨域处理(同源策略,跨域访问,CORS),系统安全问题(Session,Cookie,Token,OAuth)(软件工程综合实践课程第十三周)

    文章目录 一.要求 二.知识总结 跨域处理 1.同源策略 1.1 浏览器的同源策略 1.2 跨域请求实验 2 跨域访问 2.1 添加响应头来处理跨域 2.1.1 CORS 跨域资源共享 2.1.2 设 ...

  9. AJAX跨域访问解决方案

    Case I. Web代理的方式 (on Server A) 即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面,由该页面代替用户页面完成交互,从而返回合适的结果.此方案可以解决 ...

最新文章

  1. Java Web 中的一些问题
  2. Java 中几种常用的 RPC 框架介绍
  3. 全球及中国预编程振荡器行业需求潜力分析与投资战略咨询报告2021-2027年版
  4. ASP.NET Core Filter与IOC的羁绊
  5. php 判断wap,php判断是否wap手机客户端的方法详解
  6. Unable to round-trip http request to upstream: EOF
  7. Oracle MySQL sql 列转行 union all 实现
  8. 【图像处理】PS曲线工具matlab实现 交互自定义灰度映射(Gray Level Transformation)附代码链接
  9. 技术人员如何创业(2)---合伙人的模式
  10. JavaScript 数字转成大写“零壹贰叁肆伍陆柒捌玖”的方法
  11. yolov5模型转换(pt=>onnx=>rknn)和板端验证测试
  12. rls lms 对比 matlab,自适应均衡器的LMS和RLS两种算法的特性与仿真分析
  13. 端口Banner信息的获取
  14. 重大利好,区块链技术能保护森林资源?
  15. android三星note20.6,三星Galaxy Note 20 Ultra依旧是“安卓机皇”,用过的都说好
  16. 国内免费(开源)CMS系统【大全】
  17. java订单派单规则_重点解读 | 什么是派单?派单的好处有哪些?
  18. Linux查看mac地址方法(转)
  19. 白苹果了怎么办_苹果手机数据恢复真的能行吗?
  20. 金山词霸只能最大化,无法恢复小型查词界面

热门文章

  1. 离散数学 传递闭包 Warshall算法
  2. 看一个师兄的操作系统视频有感
  3. 为什么ASFR下载的实时流媒体无法播放?
  4. 麒麟Linux系统根目录与单目录扩容详解,适用于大多数的centeros系统
  5. 计算机网络实验IP数据报分片,实验报告三IP数据分片.doc
  6. 基于rk3288的驱动编译
  7. 便签文档储存位置在哪?便签保存在哪个文件夹,怎么在文件管理找到
  8. 关于安装Office之后,右键新建菜单中没有Word、PPT、Excel选项
  9. 从上帝视角看进程调度
  10. Java实现FTP下载文件到客户端(浏览器)