2016-05-16 75 views
1

我希望每次發出任何請求時都會將自定義HTTP標頭髮送到REST服務。我正在使用Apache HTTP Web服務器。我有以下代碼:Angularjs和HTTP標頭

app.config(['$httpProvider', function($httpProvider){ 

if(!$httpProvider.defaults.headers.get){ 
    $httpProvider.defaults.headers.get = {}; 
} 

$httpProvider.defaults.headers.get['My-Token'] = 'some_test_token'; 
}]); 

但我看到旁邊的devtools:

enter image description here

我的頭內嵌到其他。我究竟做錯了什麼?

回答

0

問題不在於AngularJS方面。我只是配置了我的應用程序的Apache HTTP服務器和後端部分。我的Spring安全篩選器鏈阻止了OPTIONS請求。

0

您提供的屏幕截圖處理OPTIONS請求,而您正在配置GET請求。 OPTIONS請求作爲HTTP內容協商實現的一部分發送。

在這種情況下,您正在發送預檢選項請求,這反過來表明您未來的請求將包含my-token標頭。這是期望的行爲,因爲服務器現在可以指示客戶端不繼續該請求或執行條件操作。

在您的瀏覽器(或其他用於調試HTTP的軟件)中,查找GET請求,並且您應該看到正確包含您的標題。

+0

我明白了。但我寧靜的服務沒有像devtools那樣捕捉到令牌。選項頭後不跟隨獲取請求。如何讓沒有OPTIONS的GET? – Nox

+1

這裏的目標不是阻止OPTIONS請求,而是確保服務器接受您的自定義標頭。這必須與你的Apache服務器的配置方式有關。恐怕不是這裏的專家。 你可以嘗試的是使用'x-my-token'而不是'my-token',因爲按照慣例,定製的HTTP頭使用'x- [header-name]'表示法。 – Kazimieras