【发布时间】:2016-01-11 03:49:50
【问题描述】:
我在浏览器控制台上显示此错误:
XMLHttpRequest 无法加载 http://localhost:8080/api/login。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:9009' 因此不允许访问。
我使用的环境是:
- 后端- Spring Boot
- 前端- Angularjs
- Web 服务器- 咕哝
在服务器上,我已经将请求和响应中的标头定义为:
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;
}
}
我已经在此链接No 'Access-Control-Allow-Origin' header is present on the requested resource 上找到了这个问题,但找不到合适的解决方案。
这是浏览器网络图片:
【问题讨论】:
-
不是您问题的直接答案,但是:1)当您将其移至生产环境时,请注意“*”,2)请向我们展示您拨打此电话时通过线路的标头(在浏览器中按 F12,然后网络将显示它们)
-
我已经上传了图片
-
这令人困惑。你不是在响应中设置标题吗?您的跟踪在请求中显示它们
标签: angularjs spring-security spring-boot angular-ui-router cors