Skip to content
Permalink
Browse files
Fix #14503: Cast to string before setting XHR header. Close gh-1427.
  • Loading branch information
hongymagic authored and gibson042 committed Nov 15, 2013
1 parent 5f325b1 commit 27b22f4ef5f3f291204f0e0f9f414ac503f6c8a8
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 7 deletions.
@@ -74,7 +74,15 @@ if ( xhrSupported ) {

// Set headers
for ( i in headers ) {
xhr.setRequestHeader( i, headers[ i ] );
// Support: IE<9
// IE's ActiveXObject throws a 'Type Mismatch' exception when setting
// request header to a null-value.
//
// To keep consistent with other XHR implementations, cast the value
// to string and ignore `undefined`.
if ( headers[ i ] !== undefined ) {
xhr.setRequestHeader( i, headers[ i ] + "" );
}
}

// Do send the request
@@ -14,5 +14,10 @@
}

foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) {
echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n";

// Only echo if key exists in the header
if ( isset( $headers[ strtoupper( $key ) ] ) ) {
echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n";
}

}
@@ -177,17 +177,24 @@ module( "ajax", {
});
});

ajaxTest( "jQuery.ajax() - headers", 4, {
ajaxTest( "jQuery.ajax() - headers", 5, {
setup: function() {
jQuery( document ).ajaxSend(function( evt, xhr ) {
xhr.setRequestHeader( "ajax-send", "test" );
});
},
url: url("data/headers.php?keys=siMPle_SometHing-elsE_OthEr_ajax-send"),
url: url("data/headers.php?keys=siMPle_SometHing-elsE_OthEr_Nullable_undefined_Empty_ajax-send"),
headers: {
"siMPle": "value",
"SometHing-elsE": "other value",
"OthEr": "something else"
"OthEr": "something else",
"Nullable": null,
"undefined": undefined,

This comment has been minimized.

Copy link
@hongymagic

hongymagic Nov 15, 2013

Author Contributor

Looks like this maybe causing some errors.

This comment has been minimized.

Copy link
@gibson042

gibson042 Nov 15, 2013

Member

Yes, but now resolved.


// Support: Firefox
// Not all browsers allow empty-string headers
// https://bugzilla.mozilla.org/show_bug.cgi?id=815299
//"Empty": ""
},
success: function( data, _, xhr ) {
var i, emptyHeader,
@@ -196,12 +203,13 @@ module( "ajax", {
}),
tmp = [];
for ( i in requestHeaders ) {
tmp.push( i, ": ", requestHeaders[ i ], "\n" );
tmp.push( i, ": ", requestHeaders[ i ] + "", "\n" );
}
tmp = tmp.join("");

strictEqual( data, tmp, "Headers were sent" );
strictEqual( xhr.getResponseHeader("Sample-Header"), "Hello World", "Sample header received" );
ok( data.indexOf( "undefined" ) < 0 , "Undefined header value was not sent" );

emptyHeader = xhr.getResponseHeader("Empty-Header");
if ( emptyHeader === null ) {
@@ -238,7 +246,7 @@ module( "ajax", {
url: url("data/headers.php?keys=content-type"),
contentType: false,
success: function( data ) {
strictEqual( data, "content-type: \n", "Test content-type is not sent when options.contentType===false" );
strictEqual( data, "", "Test content-type is not sent when options.contentType===false" );
}
}
]);

0 comments on commit 27b22f4

Please sign in to comment.