【问题标题】:Why do I need to enable CORS on the tomcat application为什么我需要在 tomcat 应用程序上启用 CORS
【发布时间】:2015-11-23 17:52:19
【问题描述】:

我有一个在 tomcat 8 服务器上运行的应用程序,在域上 和一个 Angular 网络应用程序。 web 应用使用 tomcat 应用,但是在 web.xml 中不启用过滤,webapp 会提到问题。

这是我向 tomcat 应用程序发出 js 请求的方式

function getResources($http, url){
        return $http({
            method: 'GET',
            url: url,
            headers: {'Accept': 'application/json'}
        }).then(function (result) {
            return result.data;
      });
};

我也尝试过:dataType: 'jsonp'

错误看起来像:

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

这对我来说很奇怪,因为如果原点与我连接的位置相同,则它不应该是交叉原点。

【问题讨论】:

    标签: java angularjs tomcat cors


    【解决方案1】:

    只要方案(例如 http 与 https)、域或端口发生变化,跨源请求策略就会应用。因此,在您的情况下,由于端口不同,您将需要 CORS。

    【讨论】:

      【解决方案2】:

      尝试给它一个相对 url 而不是规范的。

      这些站点还需要共享相同的端口。 https://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules

      另外,请确保您获取的是正确的 URL。例如,如果您将错误引用为“Origin 'the_IP_of_web_app'”,则它会失败,因为那不是 IP 地址。

      【讨论】:

      • 我不想透露确切的 IP,但是在 localhost 上运行会遇到与我更改问题相同的问题。
      • 在您的新问题中,您使用不同的端口。那将失败。
      • 我在 8000 端口运行 python simpleHTTPserver,网页肯定会出现。只是请求会导致错误。
      • 但是您尝试从显示托管在端口 8080 上的应用程序的浏览器连接到它?如果是这样,那就是问题所在,需要设置 CORS。我还会在多个浏览器中对其进行测试,因为它们的严格程度往往会有所不同。
      猜你喜欢
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 2021-02-21
      • 1970-01-01
      • 2011-10-13
      • 2016-11-16
      • 1970-01-01
      • 2014-05-11
      相关资源
      最近更新 更多