// 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" ) {
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,
}
}
+ 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() {