我在浏览器控制台上显示此错误:
XMLHttpRequest 无法加载http://localhost:8080/api/登录 http://localhost:8080/api/login。请求的资源上不存在“Access-Control-Allow-Origin”标头。起源 'http://本地主机:9009 http://localhost:9009' 因此不允许访问。
我使用的环境是:
-
Backend- 春季启动
-
前端- Angularjs
-
网络服务器- Grunt
在服务器上,我已经将请求和响应中的标头定义为:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setHeader("Access-Control-Allow-Origin", "*");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");
httpResponse.setHeader("Access-Control-Max-Age", "3600");
httpResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization, Content-Type");
if (httpRequest.getMethod().equals("OPTIONS")) {
httpResponse.setStatus(HttpServletResponse.SC_ACCEPTED);
return;
}
}
我已经在此链接上找到了这个问题请求的资源上不存在“Access-Control-Allow-Origin”标头 https://stackoverflow.com/questions/20973622/no-access-control-allow-origin-header-is-present-on-the-requested-resource但找不到合适的解决方案。
这是浏览器网络图像:
您的服务器应该为预检/实际 CORS 请求添加正确的 CORS 标头。我不建议实现您自己的过滤器,因为这是一个相当复杂的规范。
从 4.2 开始,Spring Framework 通过全局配置或 Filter 支持 CORS -请参阅此博客文章了解更多信息 https://spring.io/blog/2015/06/08/cors-support-in-spring-framework.
如果您使用的是 Spring Boot,版本 1.3.0(即将发布)将整合此支持 http://docs.spring.io/spring-boot/docs/1.3.0.BUILD-SNAPSHOT/reference/html/boot-features-developing-web-applications.html#boot-features-cors.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)