diff --git a/lib/defaults.js b/lib/defaults.js index 1e10e9ab..a73ea7bf 100644 --- a/lib/defaults.js +++ b/lib/defaults.js @@ -26,7 +26,7 @@ function getDefaultAdapter() { return adapter; } -module.exports = { +var defaults = { adapter: getDefaultAdapter(), transformRequest: [function transformRequest(data, headers) { @@ -64,15 +64,6 @@ module.exports = { return data; }], - headers: { - common: { - 'Accept': 'application/json, text/plain, */*' - }, - patch: utils.merge(DEFAULT_CONTENT_TYPE), - post: utils.merge(DEFAULT_CONTENT_TYPE), - put: utils.merge(DEFAULT_CONTENT_TYPE) - }, - timeout: 0, xsrfCookieName: 'XSRF-TOKEN', @@ -84,3 +75,19 @@ module.exports = { return status >= 200 && status < 300; } }; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMehtodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; diff --git a/test/specs/defaults.spec.js b/test/specs/defaults.spec.js index 933386c8..f912d89f 100644 --- a/test/specs/defaults.spec.js +++ b/test/specs/defaults.spec.js @@ -11,6 +11,8 @@ describe('defaults', function () { afterEach(function () { jasmine.Ajax.uninstall(); delete axios.defaults.baseURL; + delete axios.defaults.headers.get['X-CUSTOM-HEADER']; + delete axios.defaults.headers.post['X-CUSTOM-HEADER']; document.cookie = XSRF_COOKIE_NAME + '=;expires=' + new Date(Date.now() - 86400000).toGMTString(); }); @@ -79,6 +81,26 @@ describe('defaults', function () { }); }); + it('should use GET headers', function (done) { + axios.defaults.headers.get['X-CUSTOM-HEADER'] = 'foo'; + axios.get('/foo'); + + getAjaxRequest().then(function (request) { + expect(request.requestHeaders['X-CUSTOM-HEADER']).toBe('foo'); + done(); + }); + }); + + it('should use POST headers', function (done) { + axios.defaults.headers.post['X-CUSTOM-HEADER'] = 'foo'; + axios.post('/foo', {}); + + getAjaxRequest().then(function (request) { + expect(request.requestHeaders['X-CUSTOM-HEADER']).toBe('foo'); + done(); + }); + }); + it('should use header config', function (done) { var instance = axios.create({ headers: { @@ -103,7 +125,7 @@ describe('defaults', function () { getAjaxRequest().then(function (request) { expect(request.requestHeaders).toEqual( - utils.merge(defaults.headers.common, { + utils.merge(defaults.headers.common, defaults.headers.get, { 'X-COMMON-HEADER': 'commonHeaderValue', 'X-GET-HEADER': 'getHeaderValue', 'X-FOO-HEADER': 'fooHeaderValue', @@ -115,4 +137,3 @@ describe('defaults', function () { }); }); -