Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 637c020

Browse files
jamshidcaitp
authored andcommitted
fix($http): return empty headers, ignore properties in Object prototype
Fix response headers with an empty value Empty response header values are legal (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html). The headers getter fn will now only return null if the header property is not an own property. Closes #7779 Closes #10113 Closes #10091
1 parent f7fde93 commit 637c020

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/ng/http.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ function defaultHttpResponseTransform(data, headers) {
2626
* @returns {Object} Parsed headers as key value object
2727
*/
2828
function parseHeaders(headers) {
29-
var parsed = {}, key, val, i;
29+
var parsed = createMap(), key, val, i;
3030

3131
if (!headers) return parsed;
3232

@@ -63,7 +63,11 @@ function headersGetter(headers) {
6363
if (!headersObj) headersObj = parseHeaders(headers);
6464

6565
if (name) {
66-
return headersObj[lowercase(name)] || null;
66+
var value = headersObj[lowercase(name)];
67+
if (value === void 0) {
68+
value = null;
69+
}
70+
return value;
6771
}
6872

6973
return headersObj;

test/ng/httpSpec.js

+11
Original file line numberDiff line numberDiff line change
@@ -816,6 +816,17 @@ describe('$http', function() {
816816
});
817817

818818

819+
it('should handle empty response header', function() {
820+
$httpBackend.expect('GET', '/url', undefined)
821+
.respond(200, '', { 'Custom-Empty-Response-Header': '', 'Constructor': '' });
822+
$http.get('/url').success(callback);
823+
$httpBackend.flush();
824+
expect(callback).toHaveBeenCalledOnce();
825+
expect(callback.mostRecentCall.args[2]('custom-empty-response-Header')).toBe('');
826+
expect(callback.mostRecentCall.args[2]('ToString')).toBe(null);
827+
expect(callback.mostRecentCall.args[2]('Constructor')).toBe('');
828+
});
829+
819830
it('should have delete()', function() {
820831
$httpBackend.expect('DELETE', '/url').respond('');
821832
$http['delete']('/url');

0 commit comments

Comments
 (0)