angularjs1.4 CORS 失败

Posted

技术标签:

【中文标题】angularjs1.4 CORS 失败【英文标题】:angularjs1.4 CORS failed 【发布时间】: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。如何做到这一点,取决于服务器技术。 【参考方案1】:

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

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

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

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

我做错了什么?

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

另见:

The specification The MDN documentation

【讨论】:

+1。顺便说一句,“在那种情况下,只有应用程序和服务器,没有其他人。只涉及两个实体。” - 我认为提问者意味着他/她可以访问该网站通过浏览器之类的应用程序,而不是指他/她正在开发的网络应用程序。 @Agop — 是的,这就是我所说的。 你的解释很优雅!我想知道,由于 8000 拒绝响应,因为它不受信任,有没有办法仅在 8000 方面克服这个问题?

以上是关于angularjs1.4 CORS 失败的主要内容,如果未能解决你的问题,请参考以下文章

CORS将来自cakephp restapi实现的数据加载到角度应用程序的问题

angularjs1-4 事件指令

为啥此 CORS 请求失败?

CORS 发布请求失败

nginx,上游,cors 失败

即使存在标头,CORS 也会失败