Angular 6 HttpClient GET响应未返回自定义标头

时间:2019-03-01 01:16:24

标签: angular angular-httpclient

我是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;
}

在我的响应标题中,我得到这样的东西-

enter image description here

在响应回调中,我试图获取此令牌信息并将其设置为一些存储,以作为标头传递给我的未来请求。但是,我的响应正文是HTML文档-我正在使用

接收
responseType: 'text' as 'json

因此在我的回调中,我没有获得包含标头的整个响应,而是将HTML文档作为文本。 enter image description here

为什么我没有得到标头和全部的完整响应?

注意:我尝试完全删除responseType,但是即使服务器返回200,我总是总是得到HttpErrorResponse。

SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse

所以我保留了responseType。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在使用{observe: 'response'}的{​​{1}}选项:

HttpClient
  

现在HttpClient.get()返回一个类型为HttpResponse的Observable,而不仅仅是JSON数据。

请参阅文档中的Reading the full response