我是Angular 6的新手,并创建了一个新应用程序来替换我们现有的Angular 1.x应用程序。 我正在像这样对服务器进行GET调用-
httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }),
responseType: 'text' as 'json'
};
return this.http.get(this.domain + '/login', this.httpOptions).pipe(
map((res: HttpResponse<any>) => {
let myHeader = res.headers.get('X-CSRF-TOKEN');
return res;
}
在我的响应标题中,我得到这样的东西-
在响应回调中,我试图获取此令牌信息并将其设置为一些存储,以作为标头传递给我的未来请求。但是,我的响应正文是HTML文档-我正在使用
接收responseType: 'text' as 'json
因此在我的回调中,我没有获得包含标头的整个响应,而是将HTML文档作为文本。
为什么我没有得到标头和全部的完整响应?
注意:我尝试完全删除responseType,但是即使服务器返回200,我总是总是得到HttpErrorResponse。
SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse
所以我保留了responseType。
感谢您的帮助。
答案 0 :(得分:0)
您正在使用{observe: 'response'}
的{{1}}选项:
HttpClient
现在HttpClient.get()返回一个类型为HttpResponse的Observable,而不仅仅是JSON数据。
请参阅文档中的Reading the full response。