10

When a response for a request arrives, is there any way to read the response headers?

Allan Hasegawa
  • 988
  • 10
  • 12

3 Answers3

11

The response event handlers gets passed the <iron-request> as the second argument. <iron-request> has an xhr property that is the XMLHttpRequest used to make the request. You should be able to get the response headers from that.

<iron-ajax on-response="ajaxResponse"></iron-ajax>
...
ajaxResponse: function(e, request) {
  var headers = request.xhr.getAllResponseHeaders();
}
Trevor Dixon
  • 23,216
  • 12
  • 72
  • 109
6

If an HTTP request is made over AJAX in javascript, it is possible to get the response headers with the getAllResponseHeaders() method. It's part of the XMLHttpRequest API.

var req = new XMLHttpRequest();
req.open('GET', document.location, false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
alert(headers);

EDIT:

I just noticed the iron-ajax part of question.

<iron-ajax
    url="http://gdata.youtube.com/feeds/api/videos/"
    params='{"alt":"json", "q":"chrome"}'
    handle-as="json"
    on-response="handleResponse"
    debounce-duration="300">
</iron-ajax>
    ...
handleResponse: function(e, request) {
    var headers = request.xhr.getAllResponseHeaders();
    alert(headers)
  }

Hope it helps :)

nalinc
  • 7,375
  • 24
  • 33
  • As a follow up question, how would one determine the ***method*** that was used for the request? I can get the ***xhr.responseURL***, but I don't see where I can determine which method was used for the call. – sinjins Nov 21 '15 at 17:19
0

As mentioned in Trevor Dixon's answer, iron-ajax provides iron-request object in response handler which exposes XMLHttpRequest as xhr property.

A specific response header can be obtained using getResponseHeader method of XMLHttpRequest.

ironRequest.xhr.getResponseHeader('header name');

All headers can be obtained using getAllResponseHeaders method of XMLHttpRequest which is rarely used since we mostly don't want to read all headers at once.

Abdul Rauf
  • 5,798
  • 5
  • 50
  • 70