Angular HttpClient - получить заголовки из ответа - PullRequest
0 голосов
/ 29 сентября 2018

Я знаю, что на этот вопрос есть много ответов, но ни один из них не помог мне.

Я пытаюсь сделать следующий вызов:

this.http.options("http://...", {observe: 'response'}).subscribe((data: HttpResponse<any>) => console.log(data))

Однако поле заголовков этого ввода пустое!:

HttpResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: 

"http://...", ok: true, …}
body: ""
headers: HttpHeaders
lazyInit: ƒ ()
lazyUpdate: null
normalizedNames: Map(0)
size: (...)
__proto__: Map
[[Entries]]: Array(0)
length: 0
__proto__: Object
ok: true
status: 200
statusText: "OK"
type: 4
url: "http:/..."
__proto__: HttpResponseBase

Но если я сделаю тот же звонок с Почтальоном, я получу следующие заголовки!

Allow →PUT, HEAD, OPTIONS, GET
Content-Length →0
Content-Type →text/html; charset=utf-8
Date →Fri, 28 Sep 2018 21:29:22 GMT
Server →Google Frontend
X-Cloud-Trace-Context →6627df99d34998ddeadcdcf7a2b132be;o=1

Мне нужно получить заголовки «Разрешить», но я не вижубыть в состоянии сделать это.

Помогите пожалуйста

1 Ответ

0 голосов
/ 29 сентября 2018

Я вижу две проблемы в вашем вопросе:

  1. Используя Angular's HttpClient, заголовки ответа загружаются лениво, что означает, что вам нужно попытаться get значение в порядкена самом деле увидеть, что он существует.Например:

    const allowValue = response.headers.get('allow');
    
  2. Для того, чтобы ваш клиентский JavaScript мог получить доступ к этому заголовку, вам нужно установить заголовок ответа (конечно, на стороне сервера).Следующая строка показывает заголовок и значение, которое необходимо установить:

    Access-Control-Expose-Headers: allow
    

    Подробнее об этом можно узнать на MDN: Access-Control-Expose-Headers .

...