mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #14503: Cast to string before setting XHR header. Close gh-1427.
This commit is contained in:
parent
5f325b1bee
commit
27b22f4ef5
@ -74,7 +74,15 @@ if ( xhrSupported ) {
|
|||||||
|
|
||||||
// Set headers
|
// Set headers
|
||||||
for ( i in 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
|
// Do send the request
|
||||||
|
@ -14,5 +14,10 @@ foreach( $_SERVER as $key => $value ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) {
|
foreach( explode( "_" , $_GET[ "keys" ] ) as $key ) {
|
||||||
|
|
||||||
|
// Only echo if key exists in the header
|
||||||
|
if ( isset( $headers[ strtoupper( $key ) ] ) ) {
|
||||||
echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n";
|
echo "$key: " . @$headers[ strtoupper( $key ) ] . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -177,17 +177,24 @@ module( "ajax", {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
ajaxTest( "jQuery.ajax() - headers", 4, {
|
ajaxTest( "jQuery.ajax() - headers", 5, {
|
||||||
setup: function() {
|
setup: function() {
|
||||||
jQuery( document ).ajaxSend(function( evt, xhr ) {
|
jQuery( document ).ajaxSend(function( evt, xhr ) {
|
||||||
xhr.setRequestHeader( "ajax-send", "test" );
|
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: {
|
headers: {
|
||||||
"siMPle": "value",
|
"siMPle": "value",
|
||||||
"SometHing-elsE": "other value",
|
"SometHing-elsE": "other value",
|
||||||
"OthEr": "something else"
|
"OthEr": "something else",
|
||||||
|
"Nullable": null,
|
||||||
|
"undefined": undefined,
|
||||||
|
|
||||||
|
// Support: Firefox
|
||||||
|
// Not all browsers allow empty-string headers
|
||||||
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=815299
|
||||||
|
//"Empty": ""
|
||||||
},
|
},
|
||||||
success: function( data, _, xhr ) {
|
success: function( data, _, xhr ) {
|
||||||
var i, emptyHeader,
|
var i, emptyHeader,
|
||||||
@ -196,12 +203,13 @@ module( "ajax", {
|
|||||||
}),
|
}),
|
||||||
tmp = [];
|
tmp = [];
|
||||||
for ( i in requestHeaders ) {
|
for ( i in requestHeaders ) {
|
||||||
tmp.push( i, ": ", requestHeaders[ i ], "\n" );
|
tmp.push( i, ": ", requestHeaders[ i ] + "", "\n" );
|
||||||
}
|
}
|
||||||
tmp = tmp.join("");
|
tmp = tmp.join("");
|
||||||
|
|
||||||
strictEqual( data, tmp, "Headers were sent" );
|
strictEqual( data, tmp, "Headers were sent" );
|
||||||
strictEqual( xhr.getResponseHeader("Sample-Header"), "Hello World", "Sample header received" );
|
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");
|
emptyHeader = xhr.getResponseHeader("Empty-Header");
|
||||||
if ( emptyHeader === null ) {
|
if ( emptyHeader === null ) {
|
||||||
@ -238,7 +246,7 @@ module( "ajax", {
|
|||||||
url: url("data/headers.php?keys=content-type"),
|
url: url("data/headers.php?keys=content-type"),
|
||||||
contentType: false,
|
contentType: false,
|
||||||
success: function( data ) {
|
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" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
|
Loading…
Reference in New Issue
Block a user