From 3c4dfe8a8112d685e0cdaf8d96c18e0258b8b129 Mon Sep 17 00:00:00 2001 From: mzabriskie Date: Thu, 23 Jul 2015 09:39:59 -0700 Subject: [PATCH] Making content-type header case insensitive closes #89 --- lib/defaults.js | 12 ++++++++++-- test/specs/requests.spec.js | 23 +++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/defaults.js b/lib/defaults.js index 5d8aac7..94e9d44 100644 --- a/lib/defaults.js +++ b/lib/defaults.js @@ -20,8 +20,16 @@ module.exports = { } if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) { // Set application/json if no Content-Type has been specified - if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { - headers['Content-Type'] = 'application/json;charset=utf-8'; + if (!utils.isUndefined(headers)) { + utils.forEach(headers, function (val, key) { + if (key.toLowerCase() === 'content-type') { + headers['Content-Type'] = val; + } + }); + + if (utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = 'application/json;charset=utf-8'; + } } return JSON.stringify(data); } diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index 88bde87..3833b63 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -56,6 +56,29 @@ describe('requests', function () { }, 0); }); + it('should allow overriding Content-Type header case-insensitive', function (done) { + var request, response; + var contentType = 'application/vnd.myapp.type+json'; + + axios({ + url: '/foo', + method: 'post', + data: { prop: 'value' }, + headers: { + 'content-type': contentType + } + }).then(function (res) { + response = res; + }); + + setTimeout(function () { + request = jasmine.Ajax.requests.mostRecent(); + + expect(request.requestHeaders['Content-Type']).toEqual(contentType); + done(); + }); + }); + it('should support binary data as array buffer', function (done) { var request; var input = new Int8Array(2); -- GitLab