2015-09-06 14 views
6

Próbuję umieścić nagłówek autoryzacji w moich żądaniach, ale to nie działa.Angularjs ustawił nagłówek autoryzacji

używam to:

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

A także to próbowałem:

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

Ale z obu przypadkach mam to nagłówki w żądaniu back-end:

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 

Potrzebuję coś takiego:

Authorization: token 

Ale mam to:

Access-Control-Request-Headers:accept, authorization 

Następnie, nie mam w dowolnym miejscu wartość symboliczną.

Używam expressjs dla back-end i za pomocą tego dla 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(); 
    }); 

również powiedzieć, że testy z chrome rozszerzenia Advance Rest Client to działa poprawnie. W nagłówku żądania znajduje się Authorization: valueOfToken ..

Wielkie dzięki.

+0

Czy u kiedykolwiek uzyskać odpowiedź na to pytanie? – Pinch

Odpowiedz

13

Autoryzacja nie może być prosta.

określić przetrwać jego Basic lub Bearer Autoryzacja

Coś jak

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

lub

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

Spróbuj:

$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

klucz powinien być ** nagłówkiem ** tutaj, nie nagłówkiem –

3

Miałem ten sam problem i okazało się, że problem dotyczył konfiguracji Apache po stronie serwera. Jedną z rzeczy, które uznałem za użyteczne, jest to, że mój token autoryzacji jest wysyłany w nagłówkach żądania preflight , więc może się wydawać, że nie znajduje się w nagłówkach żądania w narzędziach programistycznych.

mam ustawienie domyślne moje tak:

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

Powinieneś użyć dostawcy $ httpProvider w bloku konfiguracji, a nie instancji $ http. –

+0

to działa. dzięki :) – zeroflaw

+1

Na kanale 1.5 należy użyć '$ httpProvider.defaults.headers.common.Authorization' – Daniele

Powiązane problemy