From d31ebc4c508a53facc62da00383a7e88082830c4 Mon Sep 17 00:00:00 2001 From: Matt Zabriskie Date: Fri, 22 Jan 2016 14:40:44 -0700 Subject: [PATCH] Normalize response status for HTTP 204 in MSIE --- lib/adapters/xhr.js | 10 +++++++--- test/specs/requests.spec.js | 26 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/lib/adapters/xhr.js b/lib/adapters/xhr.js index 33676b1..c930f2e 100644 --- a/lib/adapters/xhr.js +++ b/lib/adapters/xhr.js @@ -49,12 +49,16 @@ module.exports = function xhrAdapter(resolve, reject, config) { responseHeaders, config.transformResponse ), - status: request.status, - statusText: request.statusText, + // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201) + status: request.status === 1223 ? 204 : request.status, + statusText: request.status === 1223 ? 'No Content' : request.statusText, headers: responseHeaders, config: config }; - ((request.status >= 200 && request.status < 300) || (request.status === 1223) || (!('status' in request) && request.responseText) ? + + // Resolve or reject the Promise based on the status + ((response.status >= 200 && response.status < 300) || + (!('status' in request) && response.responseText) ? resolve : reject)(response); diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index bd05a18..7371442 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -144,6 +144,32 @@ describe('requests', function () { }, 0); }); + // https://github.com/mzabriskie/axios/issues/201 + it('should fix IE no content error', function (done) { + var request, response; + + axios({ + url: '/foo' + }).then(function (res) { + response = res + }); + + setTimeout(function () { + request = jasmine.Ajax.requests.mostRecent(); + + request.respondWith({ + status: 1223, + statusText: 'Unknown' + }); + + setTimeout(function () { + expect(response.status).toEqual(204); + expect(response.statusText).toEqual('No Content'); + done(); + }, 0); + }, 0); + }); + it('should allow overriding Content-Type header case-insensitive', function (done) { var request, response; var contentType = 'application/vnd.myapp.type+json'; -- GitLab