diff --git a/lib/core/dispatchRequest.js b/lib/core/dispatchRequest.js index c8267ad..18d4635 100644 --- a/lib/core/dispatchRequest.js +++ b/lib/core/dispatchRequest.js @@ -47,6 +47,13 @@ module.exports = function dispatchRequest(config) { } ); + // Remove header where value is null + utils.forEach(config.headers, function deleteNullValueHeaders(value, key) { + if (value === null) { + delete config.headers[key]; + } + }); + var adapter = config.adapter || defaults.adapter; return adapter(config).then(function onAdapterResolution(response) { diff --git a/lib/utils.js b/lib/utils.js index e028c67..27938d3 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -294,6 +294,11 @@ function deepMerge(/* obj1, obj2, obj3, ... */) { } } + var lastArgument = arguments[arguments.length - 1]; + if (lastArgument === null || typeof lastArgument === 'undefined') { + return lastArgument; + } + for (var i = 0, l = arguments.length; i < l; i++) { forEach(arguments[i], assignValue); } diff --git a/test/specs/headers.spec.js b/test/specs/headers.spec.js index 5a8b1a8..e7fe4fa 100644 --- a/test/specs/headers.spec.js +++ b/test/specs/headers.spec.js @@ -42,6 +42,21 @@ describe('headers', function () { }); }); + it('should not set header if value is null', function (done) { + expect(axios.defaults.headers.common['Accept']).toEqual('application/json, text/plain, */*'); + + axios('/foo', { + headers: { + Accept: null + } + }); + + getAjaxRequest().then(function (request) { + expect(typeof request.requestHeaders['Accept']).toEqual('undefined'); + done(); + }); + }); + it('should add extra headers for post', function (done) { var headers = axios.defaults.headers.common; diff --git a/test/specs/utils/deepMerge.spec.js b/test/specs/utils/deepMerge.spec.js index d879593..75265d9 100644 --- a/test/specs/utils/deepMerge.spec.js +++ b/test/specs/utils/deepMerge.spec.js @@ -26,7 +26,7 @@ describe('utils::deepMerge', function () { it('should deepMerge recursively', function () { var a = {foo: {bar: 123}}; - var b = {foo: {baz: 456}, bar: {qux: 789}}; + var b = {foo: {baz: 456}, bar: {qux: null}}; expect(deepMerge(a, b)).toEqual({ foo: { @@ -34,7 +34,7 @@ describe('utils::deepMerge', function () { baz: 456 }, bar: { - qux: 789 + qux: null } }); }); @@ -54,13 +54,13 @@ describe('utils::deepMerge', function () { }); it('handles null and undefined arguments', function () { - expect(deepMerge(undefined, undefined)).toEqual({}); + expect(deepMerge(undefined, undefined)).toEqual(undefined); expect(deepMerge(undefined, {foo: 123})).toEqual({foo: 123}); - expect(deepMerge({foo: 123}, undefined)).toEqual({foo: 123}); + expect(deepMerge({foo: 123}, undefined)).toEqual(undefined); - expect(deepMerge(null, null)).toEqual({}); + expect(deepMerge(null, null)).toEqual(null); expect(deepMerge(null, {foo: 123})).toEqual({foo: 123}); - expect(deepMerge({foo: 123}, null)).toEqual({foo: 123}); + expect(deepMerge({foo: 123}, null)).toEqual(null); }); });