为所有http请求设置默认标头不起作用

时间:2016-03-06 13:37:13

标签: angularjs cors

当我尝试向外部API发出请求时,我遇到了CORS问题。 我试图将令牌添加到所有请求中:

    var dApp = angular.module("app", []);
    dApp.run(function($http) {
    $http.defaults.headers.common.Authorization =  'APP token=TOKEN';
    });

Authorization字符串定义为API上定义的。 如果我检查请求的标头,我将无法看到我的字符串,返回代码为404 OPTIONS。 我尝试用Postman做请求,但它确实有效。

它返回404,但控制台中的错误是: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.discogs.com/database/search?type=master&artist=The%20Strokes&format=album&callback=. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

如果我在网址上传递令牌,则可以使用,但只能使用GET和POST请求。

我已经阅读了问题Angular.js performs an options http request for CORS resource,但我找不到解决问题的方法

As you can see there aren't my headers

1 个答案:

答案 0 :(得分:1)

您可以为FireFox执行此操作:

var xhr = new XMLHttpRequest({mozSystem: true});

但是,在我知道的Chrome中执行此操作的最佳方法是使用 - disable-web-security 运行该应用程序,这是不好的,因为除了它是不安全,你必须告诉你的用户禁用他们的网络安全,这不是一个好主意。

您可以按照以下方式执行此操作:

  • 您编写了一个获取请求参数的服务器端API
  • API会将它们转发给第三方服务器
  • API会将响应发送到客户端