From dd465ab22bbfa262c6567be6574bf46a057d5288 Mon Sep 17 00:00:00 2001 From: Dmitriy Mozgovoy Date: Tue, 7 Nov 2023 22:21:19 +0200 Subject: [PATCH] fix(formdata): fixed content-type header normalization for non-standard browser environments; (#6056) --- lib/adapters/xhr.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/adapters/xhr.js b/lib/adapters/xhr.js index d52d4b29bc..92f0daf259 100644 --- a/lib/adapters/xhr.js +++ b/lib/adapters/xhr.js @@ -66,11 +66,10 @@ export default isXHRAdapterSupported && function (config) { if (utils.isFormData(requestData)) { if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { requestHeaders.setContentType(false); // Let the browser set it - } else if(!requestHeaders.getContentType(/^\s*multipart\/form-data/)){ - requestHeaders.setContentType('multipart/form-data'); // mobile/desktop app frameworks - } else if(utils.isString(contentType = requestHeaders.getContentType())){ + } else if ((contentType = requestHeaders.getContentType()) !== false) { // fix semicolon duplication issue for ReactNative FormData implementation - requestHeaders.setContentType(contentType.replace(/^\s*(multipart\/form-data);+/, '$1')) + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); } }