From d74f94035a710dfa2238b616d28f170f272b2e67 Mon Sep 17 00:00:00 2001 From: perek Date: Mon, 13 Jan 2014 22:34:22 -0800 Subject: [PATCH] fix($http) - add ability to remove default headers --- src/ng/http.js | 6 ++---- test/ng/httpSpec.js | 12 ++++++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ng/http.js b/src/ng/http.js index c7dc64e2c4fd..ae3e0c7576b4 100644 --- a/src/ng/http.js +++ b/src/ng/http.js @@ -756,10 +756,6 @@ function $HttpProvider() { defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]); - // execute if header value is function - execHeaders(defHeaders); - execHeaders(reqHeaders); - // using for-in instead of forEach to avoid unecessary iteration after header has been found defaultHeadersIteration: for (defHeaderName in defHeaders) { @@ -774,6 +770,8 @@ function $HttpProvider() { reqHeaders[defHeaderName] = defHeaders[defHeaderName]; } + // execute if header value is a function for merged headers + execHeaders(reqHeaders); return reqHeaders; function execHeaders(headers) { diff --git a/test/ng/httpSpec.js b/test/ng/httpSpec.js index 86ab72ea8bd8..c2d890d1b0cf 100644 --- a/test/ng/httpSpec.js +++ b/test/ng/httpSpec.js @@ -747,6 +747,18 @@ describe('$http', function() { $httpBackend.flush(); }); + it('should delete default headers if custom header function returns null', function () { + + $httpBackend.expect('POST', '/url', 'messageBody', function(headers) { + return headers['Accept'] === undefined; + }).respond(''); + + $http({url: '/url', method: 'POST', data: 'messageBody', headers: { + 'Accept': function() { return null; } + }}); + $httpBackend.flush(); + }); + it('should override default headers with custom in a case insensitive manner', function() { $httpBackend.expect('POST', '/url', 'messageBody', function(headers) { return headers['accept'] == 'Rewritten' &&