1. 请求过滤器:

/**
* OncePerRequestFilter保证在任何Servlet容器中都是一个请求只执行一次的过滤器。
*/
public class CorsFilter extends OncePerRequestFilter { @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { Properties props = PropertiesLoaderUtils.loadAllProperties("cors.properties");
//允许的 客户端域名
response.addHeader("Access-Control-Allow-Origin", props.getProperty("cors.allowed-origins"));
//允许的 方法名
response.addHeader("Access-Control-Allow-Methods", props.getProperty("cors.allowed-methods"));
//允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
response.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,token");
//预检验请求时间
response.addHeader("Access-Control-Max-Age", props.getProperty("cors.max-age"));//30 min
response.addHeader("Access-Control-Allow-Credentials", "true"); filterChain.doFilter(request, response);
} }

2. web.xml中配置跨域过滤器:

<!--配置跨域请求的过滤器-->
<filter>
<filter-name>cors</filter-name>
<filter-class>com.jd.dashboard.cors.CrossFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cors</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3. 过滤器中的属性配置如下:

属性配置文件如下:cors.properties

#跨域请求CORS全局配置属性值

	#允许访问的客户端域名,例如:http://web.xxx.com
cors.allowed-origins=http://front.xx.com #允许访问的方法名
cors.allowed-methods=POST, GET, OPTIONS, DELETE #允许服务端访问的客户端请求头,多个请求头用逗号分割,例如:Content-Type
cors.allowed-headers=Content-Type #允许客户端访问的服务端响应头
cors.exposed-headers= #是否允许请求带有验证信息,若要获取客户端域下的cookie时,需要将其设置为true
cors.allow-credentials=true cors.max-age=1800

由于jsonp只支持GET方式的请求,所以这种方式比较推荐。

最新文章

  1. JSP里面ajax不能返回后台传出的值得问题。。。。
  2. python 数据处理中各种存储方式里数据类型的转换
  3. [神器推荐]node-webkit:跨平台桌面web应用的神器,非常有用(转)
  4. Vbox安装oracle-linux报错:VT-x features locked or unavailable in M
  5. 关于JDK中采用单例模式的类
  6. Redis11种Web应用场景
  7. PAT (Advanced Level) 1114. Family Property (25)
  8. 为何PS出的RSS总和大于实际物理内存
  9. 学习dos命令行总结
  10. Intellij +Maven 报错: Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
  11. 激活miniconda2环境,出现activate命令不存在的解决方案(activate: No such file or directory)
  12. &lt;Listener&gt;HttpSessionListener和HttpSessionAttributeListener区别
  13. TreeSet集合为什么要实现Comparable?
  14. Java 1.7 ThreadPoolExecutor源代码解析
  15. postman-记录cookies信息
  16. LeetCode 之Find Minimum in Rotated Sorted Array
  17. zoj 3537 区间dp+计算几何
  18. vuejs学习——vue+vuex+vue-router项目搭建(一)
  19. 最长上升子序列算法(n^2 及 nlogn) (LIS) POJ2533Longest Ordered Subsequence
  20. SPOJ8222/NSUBSTR:Substrings——题解

热门文章

  1. 正式班D7
  2. 多测师讲解自动化测试 _RF自定义关键字_高级讲师肖sir
  3. 【译】自动发现 .NET 5 中代码的潜在错误
  4. MeteoInfoLab脚本示例:FY-3C全球火点HDF数据
  5. selenium 设置代理ip
  6. jdk可视化工具系列——检视阅读
  7. 网络爬虫养成记(第一天)——安装Scrapy
  8. xUtils简介和使用方法
  9. zabbix自定义脚本监控服务器端口状态
  10. centos mysql5.7安装