【问题标题】:Angular 4 Setting Headers with HttpClient ModuleAngular 4 使用 HttpClient 模块设置标题
【发布时间】:2018-05-23 07:29:27
【问题描述】:

我是 Angular 的新手,我正在开发一个项目,由于某些原因我必须为服务器端授权设置标头,我使用 Angular 4 和从“@angular/common/http”导入的 HttpClient 模块

这是我的 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

【问题讨论】:

  • 您在authorization 中有错字,其中A 应为大写。也尝试使用headers.set() 而不是append
  • 通过查看我的屏幕截图,即使点击“授权”,端点也可以正常工作,问题在于我设置标题的方式。即使使用 header.set(),仍然无法正常工作。

标签: angular header httpclient


【解决方案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);

【讨论】:

  • 谢谢老兄,这解决了我的问题,正如你提到的 HttpHeaders 是不可变的,所以我应该将标题放在构造函数上。
猜你喜欢
  • 2012-08-26
  • 2018-04-19
  • 2018-05-09
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2018-08-28
相关资源
最近更新 更多