web-dev-qa-db-fra.com

Définir les en-têtes lors de la demande d'obtention angular 2

J'essaie de définir un en-tête d'autorisation sur une demande GET pour authentifier les utilisateurs auprès d'une API de repos. J'utilise Angular 2 RC1. (Je suis un débutant total).

getTest(){
    let authToken = localStorage.getItem('auth_token');
    let headers = new Headers({ 'Content-Type': 'application/json' });
    headers.append('Authorization', `Bearer ${authToken}`);

    let options = new RequestOptions({ headers: headers });
    return this._http
      .get(this._url,options)
      .map(res => console.log(res));
  }

J'autorise CORS dans mon backend.

header("Access-Control-Allow-Origin: *");
header("Access-Control-Request-Headers: Content-Type, Authorization");

Ma console:

OPTIONS api/userProfile /

XMLHttpRequest ne peut pas charger/userProfile /. La réponse pour le contrôle en amont a un code d'état HTTP non valide 406

Mes en-têtes de demande

Une idée ?

16
Adrien Castagliola

Je pense que vous avez plutôt besoin de l'en-tête Accept à cause du code d'état 406 ...

let authToken = localStorage.getItem('auth_token');
let headers = new Headers({ 'Accept': 'application/json' });
headers.append('Authorization', `Bearer ${authToken}`);

let options = new RequestOptions({ headers: headers });
return this._http
  .get(this._url,options)
  .map(res => console.log(res));

Cela vous permet de dire au serveur quel type de contenu vous attendez dans la réponse ...

Le Content-Type l'en-tête est plutôt pour spécifier le type du contenu que vous avez envoyé dans la demande. Dans votre cas, il n'y a pas de contenu ...

26
Thierry Templier
autorization =  { Authorization: 'Token adfasdfadf651f65asd1f65asdf' }

this.http.get(url, { headers: autorization})
2
Gregory