XMLHttpRequest无法加载

时间:2016-07-09 08:41:24

标签: maven spring-boot xmlhttprequest docker-compose

我写了一个在嵌入式tomcat服务器(端口:8080)上运行的spring boot MAVEN应用程序。我在端口8000上运行了另一个nodeJS express服务器。现在,从端口8000,我已代理端口8080.因此,任何地址“http://localhost:8080/ *”将带我到spring boot应用程序中的代码。我通过将断点保持在spring boot应用程序中的所需位置来测试它。

但是,在执行spring boot中的代码之后,我正在

XMLHttpRequest cannot load http://localhost:8080/users/?_=1468052674994. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.

“/ users /”是我在spring boot app中的请求映射。

我只是知道我应该将8080端口“暴露”给主机。 https://www.wouterdanes.net/2014/04/11/continuous-integration-using-docker-maven-and-jenkins.html 上面的文章说docker可以做到这一点。从这开始我并不太了解。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

浏览器使用XMLHttpRequest来创建Ajax请求。 为了防止滥用,浏览器使用“同源策略”#39;防止从不同位置加载资源作为导致请求的页面。 相同的IP,但具有不同的端口,在您的情况下,也被视为不同的位置'。

您可以使用加载请求的页面上的特殊标题来解决此问题。 这可能听起来非常复杂,但在

解释它是可以理解的

Same-origin_policyCross-origin_resource_sharing

<强>解决方案

第一个响应,包含将生成XMLHttpRequest的页面, 必须包含标题:

Access-Control-Allow-Origin:http://localhost:8080

答案 1 :(得分:0)

Spring Rest API来救我。 @CrossOrigin(originins =“http://localhost:8000”)注释给控制器解决了问题。此代码在所有控制器中重复。仍然找到有效的解决方案。