在Extjs和java项目碰到了需要同时处理跨域,外部要访问后台接口的问题

原来的代码是这样,只能设置一个extjs前台需要过滤的跨域请求

package com.xgt.config;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set; /**
* 解决跨域问题
*/
public class SimpleCORSFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:1841");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "content-type, x-requested-with");
response.setHeader("Access-Control-Allow-Credentials", "true");
       chain.doFilter(req, res);
} public void init(FilterConfig filterConfig) {} public void destroy() {} }

略微改进,给同局域网的同事访问我的接口,我设置的ip是同事的192.168.1.178,是因为他的ip访问我的接口会遭到拦截,我自己的ip不会被拦截,所以不用设置

package com.xgt.config;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set; /**
* 解决跨域问题
*/
public class SimpleCORSFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
String [] allowDomain= {"http://127.0.0.1:1841","http://192.168.1.178"};
Set<String> allowedOrigins= new HashSet<String>(Arrays.asList(allowDomain));
String originHeader=((HttpServletRequest) req).getHeader("Origin");
if (allowedOrigins.contains(originHeader)) {
response.setHeader("Access-Control-Allow-Origin", originHeader);
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "content-type, x-requested-with");
response.setHeader("Access-Control-Allow-Credentials", "true");
}
chain.doFilter(req, res);
} public void init(FilterConfig filterConfig) {} public void destroy() {} }

 还有一种SB写法,直接根据originHeader的结果来判断,if语句简单粗暴

HttpServletResponse response  = (HttpServletResponse) res;
String originHeader=((HttpServletRequest) req).getHeader("Origin");
if ("http://127.0.0.1:1841".equals(originHeader)) {
response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:1841");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "content-type, x-requested-with");
response.setHeader("Access-Control-Allow-Credentials", "true");
}else if("http://192.168.1.178".equals(originHeader)){
response.setHeader("Access-Control-Allow-Origin", "http://192.168.1.178");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "content-type, x-requested-with");
response.setHeader("Access-Control-Allow-Credentials", "true");
}else if(originHeader==null){
chain.doFilter(req,res);
}
chain.doFilter(req, res);

最新文章

  1. 线程优先级抢占实验【RT-Thread学习笔记 3】
  2. CSS3与页面布局学习笔记(三)——BFC、定位、浮动、7种垂直居中方法
  3. ZeroClipboard / jquery.zclip.min.js跨浏览器复制插件使用中遇到的问题解决
  4. ::before/:before和::after/:after的使用
  5. CABasicAnimation animationWithKeyPath 一些规定的值
  6. java中final的用法
  7. UVaLive 7361 Immortal Porpoises (矩阵快速幂)
  8. 解决js跨域问题
  9. [转]VMware 出现下述错误: Application failure. hr=0x80040101:Failed to initialize virtual machine.
  10. VMWARE player 如何让 win2012 guest os 支持HYPER-V
  11. Spring 极速集成注解 redis 实录
  12. hibernate总结-持续更新
  13. ThreadPoolExecutor系列&lt;二、ThreadPoolExecutor 代码流程图&gt;
  14. smtplib 报错501
  15. mysql加速导入数据的简单设置
  16. 【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息
  17. IP-v4&amp;IP-v6
  18. Tomcat7.0/8.0 详细安装配置图解,以及UTF-8编码配置
  19. Codeforces Round #319 (Div. 2) D - Invariance of Tree
  20. Mac使用brew安装nginx,并解决端口访问权限问题

热门文章

  1. [LeetCode 题解]: Triangle
  2. 性能测试工具Locust的使用----TaskSet类~~task任务嵌套
  3. RESTDebugger-我们的REST调试工具!!
  4. linux命令之进程管理命令
  5. BAT机器学习面试1000题系列(41-45题)
  6. 洛谷P4451 [国家集训队]整数的lqp拆分(生成函数)
  7. shell__常用命令__grep
  8. c:foreach 使用
  9. POJ1591 M*A*S*H (JAVA)
  10. Springboot第二篇:与前端fetch通信(附springboot解决跨域方法)