Ответ Angle 6 HttpClient GET не возвращает пользовательские заголовки - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в 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 - но тогда я всегда получаю HttpErrorResponse, даже если сервер возвращает 200.

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

Поэтому я сохранил responseType.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 01 марта 2019

Вы после опции {observe: 'response'} для HttpClient:

httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded' }),
  responseType: 'text' as 'json',
  observe: 'response'
};

Теперь HttpClient.get () возвращает Observable типизированного HttpResponse, а не только данные JSON.

См. Чтение полного ответа в документах.

...