记录一个开放过程中关于跨域的问题

第二空间技术实验室 2019-01-24 04:39:16
后端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,故意让他出跨域问题,然后再改回来,又坏了。。。。

解决了一天,放弃,记录一下

竟然必须有分才能发!!!仅做记录。从注册以来发过的问题没有解决的
...全文
81 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,657

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧