Skip to content
Permalink
Browse files

Fixes #5955. Option crossDomain now forces ajax to consider a request…

… as cross-domain even when it is not. Useful for when servers issue redirects to cross-domain urls. Unit test added.
  • Loading branch information...
jaubourg committed Jan 9, 2011
1 parent c55a76a commit 5a5f67800b048ae274e644547f4b8e03156ffa49
Showing with 26 additions and 8 deletions.
  1. +9 −6 src/ajax.js
  2. +17 −2 test/unit/ajax.js
@@ -520,12 +520,15 @@ jQuery.extend({
// Determine if a cross-domain request is in order
var parts = rurl.exec( s.url.toLowerCase() ),
loc = location;
s.crossDomain = !!(
parts &&
( parts[ 1 ] && parts[ 1 ] != loc.protocol ||
parts[ 2 ] != loc.hostname ||
( parts[ 3 ] || 80 ) != ( loc.port || 80 ) )
);

if ( ! s.crossDomain ) {
s.crossDomain = !!(
parts &&
( parts[ 1 ] && parts[ 1 ] != loc.protocol ||
parts[ 2 ] != loc.hostname ||
( parts[ 3 ] || 80 ) != ( loc.port || 80 ) )
);
}

// Convert data if not already a string
if ( s.data && s.processData && typeof s.data != "string" ) {
@@ -383,14 +383,15 @@ test(".ajax() - hash", function() {

test("jQuery ajax - cross-domain detection", function() {

expect( 3 );
expect( 4 );

var loc = document.location,
otherPort = loc.port === 666 ? 667 : 666,
otherProtocol = loc.protocol === "http:" ? "https:" : "http:",
protocolFlag,
hostFlag,
portFlag;
portFlag,
forcedFlag;

if ( jQuery.ajax({
url: otherProtocol + "//" + loc.host,
@@ -431,6 +432,20 @@ test("jQuery ajax - cross-domain detection", function() {
}
}

if ( jQuery.ajax({
url: loc.protocol + "//" + loc.host,
crossDomain: true,
beforeSend: function( _ , s ) {
forcedFlag = 1;
ok( s.crossDomain , "Test forced crossDomain is detected as cross-domain" );
return false;
}
}) === false ) {
if ( ! forcedFlag ) {
ok( ! jQuery.support.cors , "Test forced crossDomain is detected as cross-domain (no transport)" );
}
}

});

test(".ajax() - 304", function() {

0 comments on commit 5a5f678

Please sign in to comment.
You can’t perform that action at this time.