Скорее всего, вам не нужно отправлять запрос XHR, чтобы узнать, когда произойдет ошибка перекрестного источника. Попробуйте следующее на основе jQuery's $.get
:
var xhr = {
get: function(url, data, callback, dataType) {
if ( !this.isSameOrigin(url) ) {
callback(null, "Same-origin error or whatever", null);
}
$.get(url, data, callback, dataType);
},
isSameOrigin: function(url) {
// Do a string comparison against window.location. Get as complicated
// as you'd like
return !!(
// Url doesn't contain a valid protocol (relative to domain))
!url.match(/^https?:\/\//i) ||
// Url contains a protocol but the request is to the current domain
url.match(new RegExp("^https?://" + window.location.host, "i"))
);
}
};