aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaubourg <j@ubourg.net>2011-02-17 17:03:09 +0100
committerjaubourg <j@ubourg.net>2011-02-17 17:03:09 +0100
commit5b38439011799ae53156d137305d9440e0cddb0a (patch)
tree1555f58d0384fc9c01692f4445e01fe668d3444b
parentfaa6fe32f72900d7b31000caead2794a8346f6d8 (diff)
downloadjquery-5b38439011799ae53156d137305d9440e0cddb0a.tar.gz
jquery-5b38439011799ae53156d137305d9440e0cddb0a.zip
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.
-rw-r--r--src/ajax.js4
-rw-r--r--test/data/headers.php2
-rw-r--r--test/unit/ajax.js12
3 files changed, 13 insertions, 5 deletions
diff --git a/src/ajax.js b/src/ajax.js
index 76a2dc812..6414e8c29 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -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):$/,
@@ -439,7 +439,7 @@ jQuery.extend({
}
match = responseHeaders[ key.toLowerCase() ];
}
- return match || null;
+ return match === undefined ? null : match;
},
// Overrides response content-type header
diff --git a/test/data/headers.php b/test/data/headers.php
index d500b16f4..968f13f19 100644
--- a/test/data/headers.php
+++ b/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();
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index 80da7f8f8..335c2ac4d 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -344,7 +344,7 @@ test(".ajax() - retry with jQuery.ajax( this )", function() {
test(".ajax() - headers" , function() {
- expect( 2 );
+ expect( 4 );
stop();
@@ -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"); }