aboutsummaryrefslogtreecommitdiffstats
path: root/src/ajax.js
diff options
context:
space:
mode:
authorjaubourg <j@ubourg.net>2011-02-11 07:07:06 +0100
committerjaubourg <j@ubourg.net>2011-02-11 07:07:06 +0100
commitf2e0ae1a3932d6089853e8c0eed6ecb446610c00 (patch)
treea427912827762c80c7292511a6a6278d7c629aca /src/ajax.js
parent3a1d7a3c7c5349021f6dae979ab9b8609ae8f105 (diff)
downloadjquery-f2e0ae1a3932d6089853e8c0eed6ecb446610c00.tar.gz
jquery-f2e0ae1a3932d6089853e8c0eed6ecb446610c00.zip
Fixes #8245. Ajax now ensures header names are capitalized so that non-compliant xhr implementations don't override them.
Diffstat (limited to 'src/ajax.js')
-rw-r--r--src/ajax.js19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 5a6ac26ad..b35952f0b 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -15,6 +15,7 @@ var r20 = /%20/g,
rselectTextarea = /^(?:select|textarea)/i,
rspacesAjax = /\s+/,
rts = /([?&])_=[^&]*/,
+ rucWord = /(^|\-)([a-z])/g,
rurl = /^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,
// Keep a copy of the old load method
@@ -400,8 +401,10 @@ jQuery.extend({
// Caches the header
setRequestHeader: function( name, value ) {
- if ( state === 0 ) {
- requestHeaders[ name.toLowerCase() ] = value;
+ if ( !state ) {
+ requestHeaders[ name.toLowerCase().replace( rucWord, function( _, $1, $2 ) {
+ return $1 + $2.toUpperCase();
+ } ) ] = value;
}
return this;
},
@@ -428,7 +431,7 @@ jQuery.extend({
// Overrides response content-type header
overrideMimeType: function( type ) {
- if ( state === 0 ) {
+ if ( !state ) {
s.mimeType = type;
}
return this;
@@ -649,28 +652,28 @@ jQuery.extend({
// Set the correct header, if data is being sent
if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- requestHeaders[ "content-type" ] = s.contentType;
+ requestHeaders[ "Content-Type" ] = s.contentType;
}
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
if ( s.ifModified ) {
ifModifiedKey = ifModifiedKey || s.url;
if ( jQuery.lastModified[ ifModifiedKey ] ) {
- requestHeaders[ "if-modified-since" ] = jQuery.lastModified[ ifModifiedKey ];
+ requestHeaders[ "If-Modified-Since" ] = jQuery.lastModified[ ifModifiedKey ];
}
if ( jQuery.etag[ ifModifiedKey ] ) {
- requestHeaders[ "if-none-match" ] = jQuery.etag[ ifModifiedKey ];
+ requestHeaders[ "If-None-Match" ] = jQuery.etag[ ifModifiedKey ];
}
}
// Set the Accepts header for the server, depending on the dataType
- requestHeaders.accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ requestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) :
s.accepts[ "*" ];
// Check for headers option
for ( i in s.headers ) {
- requestHeaders[ i.toLowerCase() ] = s.headers[ i ];
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
}
// Allow custom headers/mimetypes and early abort