Context: a chrome browser extension uses JQuery to request a response from a remote django app. Django recognizes that the request is made via AJAX and resp
Going through the jQuery source, it looks like $.ajax()
(and therefore $.get()
, $.post()
, etc) will automatically set the crossDomain
option to true
if it sees that you're making a cross-domain request, which you are (relevant code here). And in the actual AJAX request, jQuery won't set the HTTP_X_REQUESTED_WITH
header that Django needs for is_ajax()
if crossDomain
is set (relevant code here).
I think the easiest way to fix this is to explicitly set crossDomain
to false
:
function xhrconnect() {
$.ajax({
url: "http://localhost:8000/xhr_test",
success: function(data) {
document.getElementById('xhrmsg').innerHTML = (data);
},
crossDomain: false
});
}
If that doesn't work, you could try using an AJAX prefilter function to manually set the HTTP_X_REQUESTED_WITH
header on the request.