From cba49d479edee356091458b00e43b786c271ae9d Mon Sep 17 00:00:00 2001 From: DigitalBrainJS Date: Tue, 26 Apr 2022 19:05:38 +0300 Subject: [PATCH 1/3] Fixed posting FormData in browser environment by reverting #3785; --- lib/adapters/xhr.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/adapters/xhr.js b/lib/adapters/xhr.js index 5da074dde9..67c28bd2c9 100644 --- a/lib/adapters/xhr.js +++ b/lib/adapters/xhr.js @@ -27,6 +27,10 @@ module.exports = function xhrAdapter(config) { } } + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + var request = new XMLHttpRequest(); // HTTP basic authentication From db9bfbdf7e1b42ef61f1bdef15b8e9b32274188c Mon Sep 17 00:00:00 2001 From: DigitalBrainJS Date: Tue, 26 Apr 2022 19:18:49 +0300 Subject: [PATCH 2/3] Added ability to keep `Content-Type` header in non-standard browser environments; --- lib/adapters/xhr.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/adapters/xhr.js b/lib/adapters/xhr.js index 67c28bd2c9..d1a7b804b5 100644 --- a/lib/adapters/xhr.js +++ b/lib/adapters/xhr.js @@ -27,7 +27,7 @@ module.exports = function xhrAdapter(config) { } } - if (utils.isFormData(requestData)) { + if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) { delete requestHeaders['Content-Type']; // Let the browser set it } From 6ee101b4b5074cf5f0d7f4d007ec181827635f01 Mon Sep 17 00:00:00 2001 From: DigitalBrainJS Date: Tue, 26 Apr 2022 21:41:39 +0300 Subject: [PATCH 3/3] Added browser test of FormData posting using external HTTP service (https://httpbin.org/post); --- test/specs/formdata.spec.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 test/specs/formdata.spec.js diff --git a/test/specs/formdata.spec.js b/test/specs/formdata.spec.js new file mode 100644 index 0000000000..5c8cca79d0 --- /dev/null +++ b/test/specs/formdata.spec.js @@ -0,0 +1,14 @@ + +describe('FormData', function() { + it('should allow FormData posting', function () { + return axios.postForm('http://httpbin.org/post', { + a: 'foo', + b: 'bar' + }).then(({data}) => { + expect(data.form).toEqual({ + a: 'foo', + b: 'bar' + }); + }); + }); +})