背景
跨域产生的问题:AJAX 请求能发送,浏览器不接收响应。
解决ajax跨域请求,我们采取的方案:服务端支持CORS (ie8、ie9不支持,高级浏览器支持)
服务端支持CORS的方法,采用自已开发过滤器的方式 。
我们开发了com.sicheng.wap.filter.CorsFilter,在服务端支持跨域请求。用于在响应头加添加CORS信息。
CorsFilter
服务端使用CorsFilter来实现CORS跨域的支持
CorsFilter的源代码在 com.sicheng.wap.filter.CorsFilter 类
核心代码如下图:
配置CorsFilter
在web.xml中配置过滤器
<!-- 支持跨域过滤器 --> <filter> <filter-name>CorsFilter</filter-name> <filter-class>com.sicheng.wap.filter.CorsFilter</filter-class> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>*.htm</url-pattern> </filter-mapping>
扩展知识
Tomcat中有一个org.apache.catalina.filters.CorsFilter 可供大家参考。 文章连接
研究这句话:这里的 cors.allowed.origins 虽然是 ‘*’,但实现上已经被优化,不会与 credentials 冲突。
这里推荐一个 Tomcat 中的 Filter:org.apache.catalina.filters.CorsFilter。
https://svn.apache.org/viewvc/tomcat/archive/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java?view=log
https://svn.apache.org/viewvc/tomcat/archive/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java?view=markup