java web使其支持跨域请求
当前后台服务分开时,Ajax异步请求不在一个域名下,会报出跨域请求问题。
1 |
. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. |
要使java服务支持跨域请求需在response的header中添加
1 |
"Access-Control-Allow-Origin", "*" |
所以,通过filter方式解决此问题,具体代码与配置如下。
web.xml配置
1 2 3 4 5 6 7 8 |
<filter> <filter-name>cors</filter-name> <filter-class>com.hanlin.filter.CORSFilter</filter-class> </filter> <filter-mapping> <filter-name>cors</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> |
java filter 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class CORSFilter implements Filter { public 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.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); chain.doFilter(req, res); } public void init(FilterConfig filterConfig) { } public void destroy() { } } |
©版权声明:本文为【翰林小院】(huhanlin.com)原创文章,转载时请注明出处!
发表评论