From 656e12fe23defcf6529448eb2ead75942c734d2f Mon Sep 17 00:00:00 2001 From: Alanscut Date: Thu, 17 Oct 2019 11:35:33 +0800 Subject: [PATCH 1/6] fix issue #2416, #2396 --- lib/core/settle.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/core/settle.js b/lib/core/settle.js index 071d9e3e8f..e4a7d88ee5 100644 --- a/lib/core/settle.js +++ b/lib/core/settle.js @@ -11,7 +11,8 @@ var createError = require('./createError'); */ module.exports = function settle(resolve, reject, response) { var validateStatus = response.config.validateStatus; - if (!validateStatus || validateStatus(response.status)) { + var responseUrl = response.config.url; + if (!validateStatus || validateStatus(response.status) || (!validateStatus && ~responseUrl.indexOf('file:'))) { resolve(response); } else { reject(createError( From 85a34c2796a3ce9adb58c101644fb3d9b3ab63da Mon Sep 17 00:00:00 2001 From: Alanscut Date: Fri, 18 Oct 2019 09:45:52 +0800 Subject: [PATCH 2/6] fix Eslint warn --- lib/core/enhanceError.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/core/enhanceError.js b/lib/core/enhanceError.js index 02fbbd6a99..d16dc7ee14 100644 --- a/lib/core/enhanceError.js +++ b/lib/core/enhanceError.js @@ -20,6 +20,7 @@ module.exports = function enhanceError(error, config, code, request, response) { error.response = response; error.isAxiosError = true; + // eslint-disable-next-line func-names error.toJSON = function() { return { // Standard From 8b4adf023abb0ed75508b2b60f47e9b660aac068 Mon Sep 17 00:00:00 2001 From: Alanscut Date: Fri, 8 Nov 2019 14:22:35 +0800 Subject: [PATCH 3/6] Modify judgment conditions --- lib/core/settle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/core/settle.js b/lib/core/settle.js index e4a7d88ee5..152c52348f 100644 --- a/lib/core/settle.js +++ b/lib/core/settle.js @@ -12,7 +12,7 @@ var createError = require('./createError'); module.exports = function settle(resolve, reject, response) { var validateStatus = response.config.validateStatus; var responseUrl = response.config.url; - if (!validateStatus || validateStatus(response.status) || (!validateStatus && ~responseUrl.indexOf('file:'))) { + if (!validateStatus || validateStatus(response.status) || (!validateStatus && responseUrl.indexOf('file:') === 0)) { resolve(response); } else { reject(createError( From a237a1f3ed6013c92103b1335d804d4a1e3c23ba Mon Sep 17 00:00:00 2001 From: Alanscut Date: Thu, 12 Mar 2020 10:38:10 +0800 Subject: [PATCH 4/6] add unit test --- test/specs/requests.spec.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index e73eedc810..1243c61104 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -157,6 +157,26 @@ describe('requests', function () { }); }); + it('When the file protocol is initiated, it should reolve when response.status is equal to 0', function (done) { + var resolveSpy = jasmine.createSpy('resolve'); + var rejectSpy = jasmine.createSpy('reject'); + + axios('./foo').then(resolveSpy) + .catch(rejectSpy) + .then(function () { + expect(resolveSpy).toHaveBeenCalled(); + expect(rejectSpy).not.toHaveBeenCalled(); + done(); + }); + + getAjaxRequest().then(function (request) { + request.respondWith({ + status: 0, + responseURL: 'file:///c://project//test.txt', + }); + }); + }); + // https://github.com/axios/axios/issues/378 it('should return JSON when rejecting', function (done) { var response; From 7f784d3d591a8eefa40f88291484446f7d4f4e21 Mon Sep 17 00:00:00 2001 From: Alanscut Date: Thu, 12 Mar 2020 17:22:17 +0800 Subject: [PATCH 5/6] update unit test --- test/specs/requests.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index 1243c61104..33a3e4e681 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -157,7 +157,7 @@ describe('requests', function () { }); }); - it('When the file protocol is initiated, it should reolve when response.status is equal to 0', function (done) { + it('should resolve when the response status is 0 (i.e. requesting with file protocol)', function (done) { var resolveSpy = jasmine.createSpy('resolve'); var rejectSpy = jasmine.createSpy('reject'); @@ -172,7 +172,7 @@ describe('requests', function () { getAjaxRequest().then(function (request) { request.respondWith({ status: 0, - responseURL: 'file:///c://project//test.txt', + responseURL: 'file:///xxx', }); }); }); From b11e4f40077ebedfd11bdb050dc52809491c5369 Mon Sep 17 00:00:00 2001 From: Alanscut Date: Thu, 12 Mar 2020 19:32:08 +0800 Subject: [PATCH 6/6] update unit test --- test/specs/requests.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/specs/requests.spec.js b/test/specs/requests.spec.js index 33a3e4e681..6f7bfbbb3e 100644 --- a/test/specs/requests.spec.js +++ b/test/specs/requests.spec.js @@ -161,7 +161,7 @@ describe('requests', function () { var resolveSpy = jasmine.createSpy('resolve'); var rejectSpy = jasmine.createSpy('reject'); - axios('./foo').then(resolveSpy) + axios('file:///xxx').then(resolveSpy) .catch(rejectSpy) .then(function () { expect(resolveSpy).toHaveBeenCalled();