2013-08-23 36 views
9

99%的ajax調用需要特定的「X-API-TOKEN」來認證並與我的Rails REST API通信。但是我還打電話給一個第三方API,並且不斷收到一條錯誤消息,說:「Access-Control-Allow-Headers不允許請求頭域X-API-TOKEN。如何刪除僅用於AngularJS中特定XHR請求的默認標題?

一切工作正常,如果我delte頭中的呼叫前右,和周圍的工作是刪除,然後調用後重新添加,但有比這更簡單的方法:

apiToken = $http.defaults.headers.common["X-API-TOKEN"] 
    delete $http.defaults.headers.common["X-API-TOKEN"] 

    $http(
     method: "GET" 
     url: 'http://...}}' 
    ).success((data, status, headers, config) -> 
    ).error (data, status, headers, config) -> 

    $http.defaults.headers.common["X-API-TOKEN"] = apiToken 

回答

4

$http服務配置對象允許您覆蓋爲特定請求發送的http頭。請參閱配置屬性headers

這可以獲取標題列表或返回標題列表的函數。因此,對於非驗證標頭請求,使默認標頭的副本刪除不需要的標頭,然後發出請求。您可以將其存儲起來供以後使用。

$httpdocumentation

+0

該解決方案有利於讓我們說,我們只有一個關鍵,但如果我們有多個自定義頁眉和有多個這樣的外部API調用,我們不需要這些標題。 我們可以使用transformRequest來實現嗎? –

13

設置慾望頭/頭未定義這樣的話,就不會影響全局設置。

$http({ 
     method: 'GET', 
     url: 'someurl', 
     headers: { 
      'X-API-TOKEN': undefined 
     } 
     } 
    ) 
+1

未定義的方式。乾杯愛德華多 – SkyBlues87