2016-03-06 73 views
0

当我尝试向外部API发出请求时,出现CORS问题。 我试图将令牌添加到这样所有的请求:对API定义为所有http请求设置默认标头不起作用

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

Authorization串定义。 如果我检查请求的标题,我看不到我的字符串,返回码是404 OPTIONS。 我试图做邮递员的请求,它的工作原理。

它返回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).

如果我通过它的工作原理URL中的令牌,而只用GET和POST请求。

我已经阅读问题Angular.js performs an options http request for CORS resource但我没有找到我的问题的解决方案

As you can see there aren't my headers

+0

404意味着资源不存在于服务器上。该网址不正确。 –

+0

我试图用邮递员来处理这个请求,它工作正常。 它返回404,但控制台中的错误是: '跨源请求被阻止:同源策略不允许通过https://api.discogs.com/database/search?type=master&artist=The%读取远程资源20Strokes&格式=专辑和回调=。 (原因:缺少CORS头'Access-Control-Allow-Origin')。' 如果我将令牌传递给它的url,但只有GET和POST请求。 – emattiazzi

+0

阅读https://www.discogs.com/developers/,该API似乎不支持CORS。您应该使用JSONP来访问API。 –

回答

1

你可以为Firefox这样做:

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

然而,最好的方法我在Chrome中这样做是通过运行--disable-web-security这个应用程序,这并不好,因为除了它不安全的事实之外,告诉你的用户禁用他们的网络安全,这不是一个好主意。

如下你可以这样做:

  • 你写一个服务器端API,它得到的请求参数
  • 的API将它们转发到第三方服务器
  • 的API将发送对客户端的响应
相关问题