Skip to content

Commit

Permalink
Fixes #8297. Makes sure response headers with empty values are handle…
Browse files Browse the repository at this point in the history
…d properly and do not prevent proper parsing of the entire response headers string. Unit test amended.
  • Loading branch information
jaubourg committed Feb 17, 2011
1 parent faa6fe3 commit 5b38439
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/ajax.js
Expand Up @@ -4,7 +4,7 @@ var r20 = /%20/g,
rbracket = /\[\]$/,
rCRLF = /\r?\n/g,
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,
// #7653, #8125, #8152: local protocol detection
rlocalProtocol = /(?:^file|^widget|\-extension):$/,
Expand Down Expand Up @@ -439,7 +439,7 @@ jQuery.extend({
}
match = responseHeaders[ key.toLowerCase() ];
}
return match || null;
return match === undefined ? null : match;
},

// Overrides response content-type header
Expand Down
2 changes: 2 additions & 0 deletions test/data/headers.php
@@ -1,6 +1,8 @@
<?php

header( "Sample-Header: Hello World" );
header( "Empty-Header: " );
header( "Sample-Header2: Hello World 2" );

$headers = array();

Expand Down
12 changes: 9 additions & 3 deletions test/unit/ajax.js
Expand Up @@ -344,7 +344,7 @@ test(".ajax() - retry with jQuery.ajax( this )", function() {

test(".ajax() - headers" , function() {

expect( 2 );
expect( 4 );

stop();

Expand Down Expand Up @@ -376,8 +376,14 @@ test(".ajax() - headers" , function() {
tmp.push( "ajax-send: test\n" );
tmp = tmp.join( "" );

equals( data , tmp , "Headers were sent" );
equals( xhr.getResponseHeader( "Sample-Header" ) , "Hello World" , "Sample header received" );
strictEqual( data , tmp , "Headers were sent" );
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"); }

Expand Down

0 comments on commit 5b38439

Please sign in to comment.