aboutsummaryrefslogtreecommitdiffstats
path: root/src/ajax
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2023-02-01 13:48:35 +0100
committerGitHub <noreply@github.com>2023-02-01 13:48:35 +0100
commita7ed9a7b6364273b1b964fd2cf9691dec2cbec6b (patch)
tree7503c5b33e00f93084d03617998f44149de35229 /src/ajax
parent0b9c5037f707a0b8e0dbb11776b690ae7dde7123 (diff)
downloadjquery-a7ed9a7b6364273b1b964fd2cf9691dec2cbec6b.tar.gz
jquery-a7ed9a7b6364273b1b964fd2cf9691dec2cbec6b.zip
Ajax: Support binary data (including FormData)
Two changes have been applied: * prefilters are now applied before data is converted to a string; this allows prefilters to disable such a conversion * a prefilter for binary data is added; it disables data conversion for non-string non-plain-object `data`; for `FormData` bodies, it removes manually-set `Content-Type` header - this is required as browsers need to append their own boundary to the header Ref gh-4150 Closes gh-5197
Diffstat (limited to 'src/ajax')
-rw-r--r--src/ajax/binary.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ajax/binary.js b/src/ajax/binary.js
new file mode 100644
index 000000000..e96661da7
--- /dev/null
+++ b/src/ajax/binary.js
@@ -0,0 +1,17 @@
+import jQuery from "../core.js";
+
+import "../ajax.js";
+
+jQuery.ajaxPrefilter( function( s ) {
+
+ // Binary data needs to be passed to XHR as-is without stringification.
+ if ( typeof s.data !== "string" && !jQuery.isPlainObject( s.data ) ) {
+ s.processData = false;
+ }
+
+ // `Content-Type` for requests with `FormData` bodies needs to be set
+ // by the browser as it needs to append the `boundary` it generated.
+ if ( s.data instanceof window.FormData ) {
+ s.contentType = false;
+ }
+} );