【问题标题】:`No Access-Control-Allow-Origin` header is present - AngularJS`No Access-Control-Allow-Origin` 标头不存在 - AngularJS
【发布时间】:2015-08-04 12:21:07
【问题描述】:

所以,当我查看错误时,我发现它主要与网络服务有关。
问题是我无法触摸网络服务。但是,在 chrome 上使用 Postman 扩展,它可以很好地返回数据。所以,我倾向于相信前端有问题。

另外,我使用的是角度,而不是初学者的水平,所以我可能会遗漏一些微不足道的东西。

.factory('forecast', ['$http', function($http){ 

    return $http.get('https://link') 
        .success(function(data) { 
            return data; 
        }) 
        .error(function(err) { 
            return err; 
        }); 
   }
]);

【问题讨论】:

标签: javascript angularjs postman


【解决方案1】:

如果您尝试通过 REST 访问的 Web 服务没有为您想要获得的响应设置该标头,您将始终收到 Access-Control-Allow-Origin 错误。

但是,大多数情况下,您可以通过发出 Server -> Server 请求而不是 Client -> Server (AJAX) 请求来绕过它。

例如,如果您使用 NodeJS 作为后端并从那里发出请求,然后通过 Node 将响应发送回您的客户端,您应该没问题。

编辑:另外,正如 cmets 中所述(忘记了,谢谢),AngularJS 的 $http 服务还公开了一个 $http.jsonp 方法,您可以使用它来解决这个问题。但是,只有当您尝试访问的网络服务也在其 API 中将信息公开为 JSONP 时,这才有效。

Documentation on $http.jsonp

【讨论】:

  • 或者如果 api 服务于 jsonp...如果你要回答一个问题,它至少应该提供所有选项
  • 谢谢,我忘记了,但现在添加了:)
猜你喜欢
  • 2019-03-18
  • 2021-08-12
  • 1970-01-01
  • 2018-10-28
  • 2019-08-15
  • 2017-02-21
  • 2015-09-28
  • 2016-10-30
  • 1970-01-01
相关资源
最近更新 更多