Спасибо, чувак, это решило мою проблему, так как вы упомянули, что HttpHeaders неизменен, поэтому я должен поместить заголовки в конструктор

ичок в Angular, и я работаю над проектом, в котором по некоторым причинам мне нужно установить заголовки для авторизации на стороне сервера, я использую Angular 4 и модуль HttpClient, импортированные из '@ angular / common / http'

Это мой класс 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);
      });
    });

  }

Когда я запускаю свой проект и вызываю функцию getUserByToken (token), консоль сервера сообщает, что токен не был отправлен. Конечная точка отлично работает с ARC, поэтому проблема на стороне клиента. Кто-нибудь может помочь мне решить эту проблему. : D

 Aravind09 дек. 2017 г., 03:32
У вас есть опечатка вauthorization в которомA должен быть в верхнем регистре. Также попробуйте использоватьheaders.set() вместоappend
 Jota.Toledo09 дек. 2017 г., 19:45
 BenFarhat Souhaib09 дек. 2017 г., 03:35
Посмотрев на мой скриншот, конечная точка работает нормально, даже если нажать «авторизацию», в любом случае проблема заключается в способе установки заголовков. даже используя header.set (), все еще не работает.

Ответы на вопрос(1)

Решение Вопроса

Это типаimmutable Map поэтому, если вы назначите новое значение, он будет повторно инициализировать объект, поэтому вы должны делать как

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

или же

let headers = new HttpHeaders().set('Content-Type', 'application/json');
headers = headers.set('authorization', 'Bearer ' + token);
 BenFarhat Souhaib09 дек. 2017 г., 22:02
Спасибо, чувак, это решило мою проблему, так как вы упомянули, что HttpHeaders неизменен, поэтому я должен поместить заголовки в конструктор

Ваш ответ на вопрос