2015-09-06 8 views
6

Sto provando a inserire un'intestazione di autorizzazione nelle mie richieste ma non funziona.Angularjs imposta un'intestazione di autorizzazione

Sto usando questo:

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

E inoltre ho provato questo:

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

Ma con entrambi i casi ho ottenuto questo intestazioni nella richiesta di 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 

Ho bisogno di qualcosa del genere:

Authorization: token 

Ma ho ottenuto questo:

Access-Control-Request-Headers:accept, authorization 

Poi, non ho in alcun luogo il valore del token.

Sto usando expressjs per il back-end e ho usando questo per 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(); 
    }); 

dicono anche che il test con l'estensione Chrome Advance Resto client si sta lavorando bene. Nell'intestazione della richiesta c'è un'autorizzazione: valueOfToken ..

Grazie mille.

+0

sei stato mai ottenere una risposta a questo? – Pinch

risposta

13

L'autorizzazione non può essere chiara.

specificare weather suo un Basic o Bearer Autorizzazione

Qualcosa di simile

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

o

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

Prova questa:

$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

la chiave dovrebbe essere ** intestazioni ** qui, non intestazione –

3

Stavo avendo lo stesso problema e si è scoperto che il problema aveva a che fare con la configurazione di Apache sul lato server. Una cosa che ho trovato che potrebbe esserti utile qui è che il mio token di autorizzazione viene inviato negli header di richiesta preflight piuttosto che nella richiesta principale, quindi potrebbe non apparire nelle intestazioni della richiesta quando la guardi negli strumenti di sviluppo.

Sto installando i miei valori di default in questo modo:

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

È necessario utilizzare il provider $ httpProvider in un blocco di configurazione non l'istanza $ http. –

+0

funziona. grazie :) – zeroflaw

+1

Su angular 1.5 dovresti usare '$ httpProvider.defaults.headers.common.Authorization' – Daniele