Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 带HttpClient模块的角度4设置标头_Angular_Header_Httpclient - Fatal编程技术网

Angular 带HttpClient模块的角度4设置标头

Angular 带HttpClient模块的角度4设置标头,angular,header,httpclient,Angular,Header,Httpclient,我是Angular的新手,我正在做一个项目,出于某些原因,我必须为服务器端授权设置头,我使用Angular 4和从'@Angular/common/http'导入的HttpClient模块 这是我的AuthService类 import { Injectable } from '@angular/core'; import { User } from '../../models/user'; import { HttpClient, HttpHeaders, HttpRequest } from

我是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(令牌)函数时,服务器控制台告诉我没有发送令牌。 端点与ARC完美配合,因此问题在客户端。 有人能帮我解决这个问题吗。
:D

它的类型为
不可变映射
,因此,如果您指定一个新值,它将重新初始化对象,因此您应该按照

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


您在
authorization
中有一个输入错误,其中
a
应为大写。另外,请尝试使用
headers.set()
而不是
append
,通过查看我的屏幕截图,即使通过点击“授权”,端点也可以正常工作。无论如何,问题在于我设置头的方式。即使使用header.set(),仍然不起作用。Thank dude的可能重复,这解决了我的问题,正如您提到的HttpHeaders是不可变的,所以我应该将headers放在构造函数上。
let headers = new HttpHeaders().set('Content-Type', 'application/json');
headers = headers.set('authorization', 'Bearer ' + token);