Reputation: 1008
When a response for a request arrives, is there any way to read the response headers?
Upvotes: 10
Views: 5745
Reputation: 6221
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.
Upvotes: 0
Reputation: 24352
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();
}
Upvotes: 11
Reputation: 7425
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 :)
Upvotes: 6