2016-03-06 128 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將發送對客戶端的響應