Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Finding the URL of an XMLHttpRequest

I've got some code that does an ajax request using jQuery, and handles success and error conditions. On an error, I want to find out what the URL I called was, so I can log it. This information appears to be contained in the XMLHttpRequest.channel, but firefox is complaining about accessing this -

Permission denied for <http://localhost:8081> to get property XMLHttpRequest.channel

Any ideas how I can determine the URL associated with an XMLHttpRequest? What's the security issue getting hold of this information? Cheers,

Colin

like image 974
hawkett Avatar asked Dec 28 '22 13:12

hawkett


2 Answers

Ok - sorry about this - an answer is here

http://api.jquery.com/ajaxError/

specifically this code from above link -

$('.log').ajaxError(function(e, xhr, settings, exception) {
  if (settings.url == 'ajax/missing.html') {
    $(this).text('Triggered ajaxError handler.');
  }
});

shows how to access the request url in the event of an ajax error. Doesn't explain why the XMLHttpRequest.channel object is a no go though. Anyway, hopefully that will help others with a similar problem.

like image 186
hawkett Avatar answered Dec 31 '22 01:12

hawkett


Well, you just add it ;]

XMLHttpRequest.prototype.baseOpen = XMLHttpRequest.prototype.open; 
XMLHttpRequest.prototype.open = function(method, url, async) { this._url = url; return XMLHttpRequest.prototype.baseOpen.apply(this, arguments); }; 

then you can later ask for xhr._url in your error handler.

PS: Sorry, just discovered this thread is old.

like image 31
frevd Avatar answered Dec 31 '22 02:12

frevd