Подтвердить что ты не робот

JqXHR.getAllResponseHeaders() не вернет все заголовки

После вызова jQuery.ajax() jqXHR.getAllResponseHeaders() не будет возвращаться все заголовки. Сервер ответил следующими заголовками:

Connection: keep-alive
Content-Length: 64
Content-Type: application/json
X-My-CustomHeader: whatever

getAllResponseHeaders() только:

Content-Type: application/json

Что я делаю неправильно?

Пример

var request = {
  'url': 'http://api.someExternalDomain.com/resource/',
  'type': someMethod,
  'success': function(data, textStatus, jqXHR) {
    console.log(jqXHR.getAllResponseHeaders());
  }
};

$.ajax(request);
4b9b3361

Ответ 1

С официального сайта jquery:

В настоящее время из-за ошибки в Firefox, где .getAllResponseHeaders() возвращает пустую строку, хотя .getResponseHeader('Content-Type') возвращает непустую строку, автоматически расшифровывая ответы JSON CORS в Firefox с jQuery не поддерживается.

http://api.jquery.com/jQuery.ajax/

Ответ 2

svenyonson назвал это в комментариях, но для меня это был ответ, поэтому я его поднимаю. Если вы выполняете CORS, сервер должен быть явно о том, какие заголовки клиенту разрешено читать. Если вы хотите прочитать X-My-CustomHeader в javascript, тогда этот заголовок должен быть в ответе сервера:

Access-Control-Expose-Headers: X-My-CustomHeader

Подробнее здесь.