2016-08-15 3 views
12

Я использую fetch на chrome Версия 52.0.2743.82 (64-разрядная версия). Я хочу получить все заголовки в ответе. Следующий фрагмент возвращает только content-type, но если вы заглянете в инструменты chrome dev, он отобразит много других заголовков ответов. Как получить другие заголовки из выборки.Как получить заголовки ответа из выборки

fetch('https://httpbin.org/get') 
    .then(response => { 
     const headers = response.headers.entries(); 
     let header = headers.next(); 
     while (!header.done){ 
     console.log(headers.value); 
     header = header.next(); 
     } 
    }) 

Я попробовал полифорирование (вручную переопределить) реализацию github. Еще не повезло.

+2

Если вы знаете, какой заголовок вы ищете, вы можете попробовать response.headers.get ('header-name') – KumarM

+0

Посмотрев таблицу совместимости в нижней части этой страницы, она не говорит, что хром поддерживает записи() все же. https://developer.mozilla.org/en-US/docs/Web/API/Headers – KumarM

ответ

26

Вы не можете получить доступ ко всем заголовкам при запросе междоменного контента через ajax. Вы можете получить доступ ко всем заголовкам, если происхождение одинаковое.

Как объяснено в W3 спецификации here, только Content-Type, Last-modified, Content-Language, Cache-Control, Expires, Pragma заголовки доступны.

Далее https://httpbin.org/get отправьте только Content-Type заголовок из списка доступных заголовков, так что вы получили это только.

Редактировать: вы можете опубликовать нестандартные заголовки ответа CORS, отправив Access-Control-Expose-Headers с заголовками, которые вы хотите, чтобы клиент получил доступ к ответу.

+0

Это было очень полезно. Для разработчиков Rails 5 работало редактирование 'config/initializers/cors.rb'. Я добавил: 'expose: ['Location'],' в оператор 'resource '*'' – jasonseminara

Смежные вопросы