我正在使用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)
有效。
但我希望第一次尝试也能奏效。有人可以向我解释我的第一次尝试有什么问题,或者向我解释一下正确的方法是什么?
答案 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。