如何使用http.get设置标头

时间:2017-09-30 12:04:20

标签: angular typescript http-headers angular2-http

我正在使用Angular 4.4.4,我需要为GET请求设置Authorization标头。我已经研究了文档和代码来弄清楚如何做到这一点。这就是结果:

const headers = new Headers({ Authorization: this.auth.accessToken});
this.http.get('/api/Messages', { headers } as RequestOptionsArgs)

然而,这不起作用。请求没有标题选项。

但如果我这样做

const options = { headers: {Authorization: this.auth.accessToken} as any};

return this.http.get('/api/Messages', options as RequestOptionsArgs)

有效。

但我希望第一次尝试也能奏效。有人可以向我解释我的第一次尝试有什么问题,或者向我解释一下正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

related question中所述,问题是Fetch API与@angular/http模块中的类具有相同的类名(它们的设计基于Fetch API)。

如果未导入Angular类(Header,Response等),则使用全局类。这会导致错误的行为和无关的错误,因为Angular类与Fetch API不兼容,但Http并非万无一失。

解决方案是始终将相关类与Http一起导入(即使未使用它们,也可以事先完成):

import { Http, Response, Headers } from '@angular/http';

避免此问题的一种方法是切换到最新的Angular 4版本中提供的HttpClient并具有不同的API。