web-dev-qa-db-fra.com

Angular 4 Définition des en-têtes avec le module HttpClient

je suis nouveau avec Angular et je travaille sur un projet qui, pour certaines raisons, je dois définir des en-têtes pour l'autorisation côté serveur, j'utilise Angular 4 et le Module HttpClient importé de '@ angular/common/http'

Ceci est ma classe AuthService

import { Injectable } from '@angular/core';
import { User } from '../../models/user';
import { HttpClient, HttpHeaders, HttpRequest } from 
'@angular/common/http';
import { Observable } from 'rxjs';
import { Globals } from '../../utils/global';
import { Converters } from '../../utils/converters';


@Injectable()
export class AuthService {
getUserByToken(token: string): any {
    let headers = new HttpHeaders();
    headers.append('Content-Type', 'application/json');
    headers.append('authorization', 'Bearer ' + token);

    console.log(headers);

    return new Promise((resolve, reject) => {
      this.http.get(this.global.urls['info'], { headers: headers }).subscribe((data) => {
        if (data != null) {
          this.converter.userJsonToObject(data).then((data: User) => {
            this.setCurrentUser(data);
            this.persistToken(data.token);
            resolve(data);
          });
        } else {
          reject('This user is not defined');
        }
      }, (err) => {
        reject(err);
      });
    });

  }

ARC

Lorsque j'exécute mon projet et que j'appelle la fonction getUserByToken (token), la console du serveur m'a dit qu'aucun jeton n'avait été envoyé. Le point de terminaison fonctionne parfaitement avec ARC, donc le problème est du côté client. quelqu'un peut-il m'aider à résoudre ce problème? :RÉ

8
BenFarhat Souhaib

Il est de type immutable Map donc si vous attribuez une nouvelle valeur, cela réinitialisera l'objet donc vous devriez faire comme

let headers = new HttpHeaders().set('Content-Type', 'application/json')
                               .set('authorization', 'Bearer ' + token);

ou

let headers = new HttpHeaders().set('Content-Type', 'application/json');
headers = headers.set('authorization', 'Bearer ' + token);
17
Aravind