Anuglar $ http.get cURL复制

时间:2016-03-16 23:21:28

标签: angularjs curl

我遇到了角度$ http.get请求和标头参数的问题。我试图复制这个cURL

curl -X GET --header "Accept: application/json" --header "authenticationkey: somerandomtoken" "http://external.domain.com/admin/"

这给了我想要的答案。

角度:

var urlBase = "//external.domain.com/admin/";
var config = {
    headers:{
        'Accept'           : 'application/json',
        'authenticationkey': 'somerandomtoken'
     }
};
dataFactory.getToken = function () {
    return $http.get(urlBase,config);
};

我收到此错误消息:

XMLHttpRequest cannot load http://external.domain.com/admin/. Request header field authenticationkey is not allowed by Access-Control-Allow-Headers in preflight response.

这让我疯了。还尝试了这个AngularJS $http custom header for all requests,它给了我同样的错误。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是一个CORS问题。如果应用程序服务器和API域不相同,则会发生这种情况。

解决方案可以 -

  1. 允许API服务器上的跨域请求。但这将导致允许每个人使用您的API。所以想一想。您还可以限制服务器端的特定域。
  2. 如果您只是出于开发目的而需要它,并且您的最终捆绑包只会在同一个域上发布,那么请在Chrome https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en中使用此插件,以便临时访问此类资源。
  3. 第三个选项是在您的域API服务器上托管这些API JS库,类似​​于Facebook和Google API。 API JS将作为双方之间的桥梁。