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('; ')); } }