【问题标题】:angularjs1.4 CORS failedangularjs1.4 CORS 失败
【发布时间】:2015-10-04 14:56:42
【问题描述】:

我正在使用 AngularJS 1.4.3。这是我的代码:

angular
    .module('app', [])
    .run(run);

function run($http) {

      a = $http({
          method: "GET",
          url: 'http://127.0.0.1:8080/test',
          data: {}
      });

      console.log(a);
}

使用浏览器或邮递员可以得到正确的。但是上面的代码给出了

XMLHttpRequest 无法加载 http://127.0.0.1:8080/test。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://localhost:8000' 因此不允许访问。

重点是,我可以使用 GET 方法通过应用程序获取结果。但是使用代码是行不通的。我做错了什么?

【问题讨论】:

  • 您可以使用 grunt-proxy 设置代理或在服务器端允许 CORS。如何做到这一点,取决于服务器技术。

标签: javascript angularjs xmlhttprequest cors


【解决方案1】:

重点是,我可以使用 GET 方法通过应用程序获取结果。

在这种情况下,只有应用程序和服务器,没有其他人。仅涉及两个实体。

但是使用代码是行不通的。

您有两个不同的网站(localhost:8000 和 localhost:8080),浏览器不知道 8000 提供的 JavaScript 是否可以信任 8080 愿意提供给用户的数据。

我做错了什么?

您没有在来自 8080 的 HTTP 响应中提供 Access-Control-Allow-Origin 标头来告诉浏览器可以信任 8000 的数据。

另见:

【讨论】:

  • +1。顺便说一句,“在那种情况下,只有应用程序和服务器,没有其他人。只涉及两个实体。” - 我认为提问者意味着他/她可以访问该网站通过浏览器之类的应用程序,而不是指他/她正在开发的网络应用程序。
  • @Agop — 是的,这就是我所说的。
  • 你的解释很优雅!我想知道,由于 8000 拒绝响应,因为它不受信任,有没有办法仅在 8000 方面克服这个问题?
猜你喜欢
  • 2019-09-07
  • 2020-05-02
  • 2012-08-14
  • 2012-09-19
  • 2014-06-22
  • 2017-02-15
  • 2015-10-30
  • 2021-03-11
  • 1970-01-01
相关资源
最近更新 更多