【问题标题】:Getting remote data with angularjs without CORS使用没有 CORS 的 angularjs 获取远程数据
【发布时间】:2017-10-16 00:45:55
【问题描述】:

有没有一种方法可以在远程服务器上不启用 CORS 的情况下使用 restful api 访问远程数据。

我问这个是因为我试图通过带有 angularjs 的 API 访问远程数据,并且我已经尽了最大努力似乎无法加载数据。我总是从 Chrome 中得到这个

请求的资源上没有“Access-Control-Allow-Origin”标头

下面是我的脚本

var auth = $base64.encode("dHNxdWFpbm9vOlFoYXNoZW0xMjM="), 
headers = {"Authorization": "Basic " + auth};

$http({method: 'GET', url: 'http://mywebapp.com/Cust?account_number=010104051681', 
    headers: { 'Authorization': 'Basic dHNxdWFpbm9vOlFoYXNoZW0xMjM=' }
}).success
(function(data){
   $scope.user=data;
   console.log(JSON.stringify(data));
});

所以在没有启用 CORS 的情况下,我可以通过 JS 获取数据,或者除非我启用 CORS,否则我无法获取数据

【问题讨论】:

  • 如果您控制 mywebapp.com 为什么不为呼叫来源启用 CORS?
  • 当然。运行您自己的实现 jsonp 或 cors 的服务器,或者是本地服务器,并说服务器获取数据。容易。
  • 如果不启用跨域资源共享,就不能共享跨域资源,不行。
  • 服务器不是我的。我只是将该 URL 用作示例
  • 您可以使用反向代理:en.wikipedia.org/wiki/Reverse_proxy

标签: javascript angularjs cors


【解决方案1】:

你可以做一个反向代理https://en.wikipedia.org/wiki/Reverse_proxy。简而言之:

  1. AngularJS 客户端调用你的后端服务器
  2. 您的后端服务器调用http://mywebapp.com/Cust?account_number=010104051681
  3. 您的后端服务器得到响应
  4. 您的后端服务器将该响应发送回 AngularJS 客户端。

【讨论】:

    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多