Fixes #8297. Makes sure response headers with empty values are handled properly and do not prevent proper parsing of the entire response headers string. Unit test amended.
This commit is contained in:
parent
faa6fe32f7
commit
5b38439011
|
@ -4,7 +4,7 @@ var r20 = /%20/g,
|
||||||
rbracket = /\[\]$/,
|
rbracket = /\[\]$/,
|
||||||
rCRLF = /\r?\n/g,
|
rCRLF = /\r?\n/g,
|
||||||
rhash = /#.*$/,
|
rhash = /#.*$/,
|
||||||
rheaders = /^(.*?):\s*(.*?)\r?$/mg, // IE leaves an \r character at EOL
|
rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
|
||||||
rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
||||||
// #7653, #8125, #8152: local protocol detection
|
// #7653, #8125, #8152: local protocol detection
|
||||||
rlocalProtocol = /(?:^file|^widget|\-extension):$/,
|
rlocalProtocol = /(?:^file|^widget|\-extension):$/,
|
||||||
|
@ -439,7 +439,7 @@ jQuery.extend({
|
||||||
}
|
}
|
||||||
match = responseHeaders[ key.toLowerCase() ];
|
match = responseHeaders[ key.toLowerCase() ];
|
||||||
}
|
}
|
||||||
return match || null;
|
return match === undefined ? null : match;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Overrides response content-type header
|
// Overrides response content-type header
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
header( "Sample-Header: Hello World" );
|
header( "Sample-Header: Hello World" );
|
||||||
|
header( "Empty-Header: " );
|
||||||
|
header( "Sample-Header2: Hello World 2" );
|
||||||
|
|
||||||
$headers = array();
|
$headers = array();
|
||||||
|
|
||||||
|
|
|
@ -344,7 +344,7 @@ test(".ajax() - retry with jQuery.ajax( this )", function() {
|
||||||
|
|
||||||
test(".ajax() - headers" , function() {
|
test(".ajax() - headers" , function() {
|
||||||
|
|
||||||
expect( 2 );
|
expect( 4 );
|
||||||
|
|
||||||
stop();
|
stop();
|
||||||
|
|
||||||
|
@ -376,8 +376,14 @@ test(".ajax() - headers" , function() {
|
||||||
tmp.push( "ajax-send: test\n" );
|
tmp.push( "ajax-send: test\n" );
|
||||||
tmp = tmp.join( "" );
|
tmp = tmp.join( "" );
|
||||||
|
|
||||||
equals( data , tmp , "Headers were sent" );
|
strictEqual( data , tmp , "Headers were sent" );
|
||||||
equals( xhr.getResponseHeader( "Sample-Header" ) , "Hello World" , "Sample header received" );
|
strictEqual( xhr.getResponseHeader( "Sample-Header" ) , "Hello World" , "Sample header received" );
|
||||||
|
if ( jQuery.browser.mozilla ) {
|
||||||
|
ok( true, "Firefox doesn't support empty headers" );
|
||||||
|
} else {
|
||||||
|
strictEqual( xhr.getResponseHeader( "Empty-Header" ) , "" , "Empty header received" );
|
||||||
|
}
|
||||||
|
strictEqual( xhr.getResponseHeader( "Sample-Header2" ) , "Hello World 2" , "Second sample header received" );
|
||||||
},
|
},
|
||||||
error: function(){ ok(false, "error"); }
|
error: function(){ ok(false, "error"); }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue