views:

94

answers:

2

Hi,

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&gt; 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

+1  A: 

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.

hawkettc
+1  A: 

The security issue is cross domain XHR requests.

In FF2 you used to be able to override this in about:config, also see this blog and especially this preference:

user_pref("capability.policy.default.XMLHttpRequest.channel", "allAccess");

But that's all not possible anymore in FF3. And with a good reason.

Note that XMLHttpRequest.channel is Gecko-specific, so this wouldn't have worked in non-Gecko browsers.

BalusC