2017-01-18 17 views
1

Я делаю запрос на запись с ajax (CORS), и я устанавливаю заголовок (Content-Type:application/x-www-form-urlencoded), и я пытаюсь прочитать заголовки ответа. Вот что я сделал:ответ ajax: не могу прочитать все заголовки из ответа

function makePostRequest(url, data, headers, httpVerb, dataType, elementId) { 
    $.ajax({ 
     url: url, 
     type: httpVerb, 
     data: data, 
     headers: headers, 
     dataType: dataType, 
     success: function(data, textStatus, jqXHR) { 
      $("#" + elementId).val(jqXHR.responseText); 
      alert(JSON.stringify(jqXHR)); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      $("#" + elementId).val(jqXHR.responseText); 
     } 
    }).then(function(data, status, xhr) { 
     console.log(xhr.getAllResponseHeaders()); 
    }); 
} 

Но в консоли печатается только

Content-Type: application/x-www-form-urlencoded; charset=utf-8 

И в хромированных инструментов разработчика Я вижу: enter image description here

Как получить все эти заголовки?

PS: Я использую Chrome, а не Firefox()

Я спросил, как получить все заголовки, а не почему я получаю только один заголовок (если это не возможно, я приму этот ответ).

+1

Поиск в Google для 'ajax get all headers', кажется, дает хорошие результаты? –

+1

Возможный дубликат [jqXHR.getAllResponseHeaders() не вернет все заголовки] (http://stackoverflow.com/questions/5614735/jqxhr-getallresponseheaders-wont-return-all-headers) –

ответ

2

Итак, я делал запрос CORS, и в этом случае заголовки отфильтровываются по соображениям безопасности.

Единственный способ Acces эти заголовки, чтобы включить в ответ заголовок Access-Control-Expose-Headers, который будет содержать список заголовков, которые могут быть считаны из JavaScript, как вы можете прочитать here:

7.1.1 Обращение с ответом на Cross-Origin Request

агенты пользователей должны отфильтровывать все заголовки ответа, кроме тех , которые являются простым заголовком ответа или из которых имя поля является ASCII регистронезависимого матчем для одного из значений от Access-Control-Expose-Headers (если есть), перед публикацией ответных заголовков API, определенных в спецификациях API CORS.