Commit 5b384390 authored by jaubourg's avatar jaubourg

Fixes #8297. Makes sure response headers with empty values are handled...

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.
parent faa6fe32
...@@ -4,7 +4,7 @@ var r20 = /%20/g, ...@@ -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({ ...@@ -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
......
<?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() { ...@@ -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() { ...@@ -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"); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment