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);
Ответы
Ответ 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
Подробнее здесь.