今天在工作时遇到一个跨域请求的问题,问题场景就是以往前端在开发过程中的ajax请求url直接是/Controller的mapping/方法mapping,当我们跨域访问的时候,则需要在请求路径前加上服务器地址及端口号
例如:
非跨域请求URL :/test/demo
跨域请求URL :192.168.12.190:8001/test/demo
但是当我们使用跨域请求URL的时候,浏览器报错
Access-Control-Allow-Origin提示Access-Control-Allow-Origin ... is therefore not allowd access,很显然是不被允许访问
这个问题我们只需要在后台过滤器中设置相应的请求头为 * 即可
代码如下:
HttpServletResponse response = (HttpServletResponse) servletResponse;
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");
filterChain.doFilter(servletRequest, servletResponse);
再次请求
请求成功以上为该问题的解决方案
源码: ajaxdemo
测试页面比较简单
网友评论