后端SpringMVC
没问题的配置:
<mvc:cors>
<mvc:mapping path="/api/**" allowed-origins="*"/>
<mvc:mapping path="/code/imageCode/**" allowed-origins="*"/>
</mvc:cors>
神奇的问题:
一、通过spring配置拦截器:
自定义拦截器:
public class ApiAuthInterceptor implements HandlerInterceptor {
添加跨域设置
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "true");
// response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, HEAD");
// response.addHeader("Access-Control-Allow-Headers", "Content-Type");
// response.addHeader("Access-Control-Max-Age", "3600");
二、自定义Filter
public class APIAuthFilter implements Filter {
配置跨域:
request.setCharacterEncoding("UTF-8");
HttpServletResponse resp = (HttpServletResponse) response;
// resp.setCharacterEncoding("UTF-8");
// resp.setContentType("text/html;charset=UTF-8");
resp.addHeader("Access-Control-Allow-Credentials", "true");
// resp.addHeader("Access-Control-Allow-Origin", "http://back.dispace.net");
resp.addHeader("Access-Control-Allow-Origin", "*");
// resp.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, HEAD");
// resp.addHeader("Access-Control-Allow-Headers", "Content-Type");
// resp.addHeader("Access-Control-Max-Age", "3600");
System.out.println("FilterDemo01执行前!!!");
filterChain.doFilter(request, resp); // 让目标资源执行,放行
System.out.println("FilterDemo01执行后!!!");
================以上两种方案现象========================
浏览器能抓到 header中设置的内容,说明代码生效了, 但是无法跨域
测试了各种方式 配置放到了所有想的位置,注释了怀疑有影响的spring配置
期间好使了一会儿,好使的时候重启改代码都好使,我以为解决了。
拦截器return了false,故意让他出跨域问题,然后再改回来,又坏了。。。。
解决了一天,放弃,记录一下
竟然必须有分才能发!!!仅做记录。从注册以来发过的问题没有解决的