2015-09-06 137 views
6

我想在我的請求中放入授權標題,但它不起作用。Angularjs設置授權標題

我使用這個:

var config = {headers: { 
    'Authorization': token 
    } 
}; 
return $http.get('http://localhost:3000/apis/users/all', config); 

而且我也試過這樣:

$http.defaults.headers.common['Authorization'] = token; 

但隨着這兩種情況下,我得到這個消息頭,後端的請求:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:es-ES,es;q=0.8,ca;q=0.6,en;q=0.4,gl;q=0.2 
Access-Control-Request-Headers:accept, authorization 
Access-Control-Request-Method:GET 
Connection:keep-alive 
Host:localhost:3000 
Origin:http://localhost:8000 
Referer:http://localhost:8000/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4)   AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36 

我需要這樣的東西:

Authorization: token 

但我得到這個:

Access-Control-Request-Headers:accept, authorization 

然後,我沒有在任何地方有令牌值。

我使用後端expressjs,我用這個爲CORS:

app.use(function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization'); 
    next(); 
    }); 

也說使用Chrome擴展程序提前REST客戶端,這是工作罰款測試。在請求標題中有一個授權:valueOfToken ..

非常感謝。

+0

沒有ü曾經得到一個答案? – Pinch

回答

13

授權不可能是簡單的。

指定渡過了一個BasicBearer授權

喜歡的東西

$http.defaults.headers.common['Authorization'] = 'Basic ' + token; 

$http.defaults.headers.common['Authorization'] = 'Bearer ' + token; 
1

試試這個:

$http({ 

url : "127.0.0.1/login", 
method : 'GET', 
headers : { 
     Content-Type : 'application/json',  
     Authorization: token 
     } 
}).success(function(data){ 
    alert("login Successfully"); 
}).error(function(error){ 
    alert("login error"); 
}) 
+1

關鍵應該是**標頭**這裏,而不是標頭 –

3

我遇到了同樣的問題,事實證明這個問題與服務器端的Apache配置有關。我在這裏找到的一件可能對你有用的事情是,我的授權令牌是在預檢請求標頭而不是主要請求中發送的,所以它在查看它時可能不會顯示在請求的標頭中在開發人員工具中。

我設置我的默認設置是這樣的:

app.config(function($httpProvider) { 
    $httpProvider.defaults.common['Authorization'] = token; 
    // For angular 1.5, use: 
    // $httpProvider.defaults.headers.common['Authorization'] = token;   
}); 
+0

您應該在配置塊中使用$ httpProvider提供程序而不是$ http實例。 –

+0

它的工作原理。謝謝:) – zeroflaw

+1

在角1.5上,你應該使用'$ httpProvider.defaults.headers.common.Authorization' – Daniele