summaryrefslogtreecommitdiff
path: root/ext/fetch/lib.rs
diff options
context:
space:
mode:
authorLuca Casonato <hello@lcas.dev>2021-11-09 12:10:40 +0100
committerGitHub <noreply@github.com>2021-11-09 12:10:40 +0100
commit0de6d1edc4c902044744cdf832113f9aeb167fc5 (patch)
treeac2868ec27baac149e067c2a7a3d044657f63e9f /ext/fetch/lib.rs
parent75793baae83123f890442c5d32e3dd38eb18ce1c (diff)
fix(fetch): set content-length for empty POST/PUT (#12703)
This commit changes `fetch` to set `content-length: 0` on POST and PUT requests with no body.
Diffstat (limited to 'ext/fetch/lib.rs')
-rw-r--r--ext/fetch/lib.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/ext/fetch/lib.rs b/ext/fetch/lib.rs
index b4bffb6de..4bd62cd7c 100644
--- a/ext/fetch/lib.rs
+++ b/ext/fetch/lib.rs
@@ -246,7 +246,7 @@ where
let permissions = state.borrow_mut::<FP>();
permissions.check_net_url(&url)?;
- let mut request = client.request(method, url);
+ let mut request = client.request(method.clone(), url);
let request_body_rid = if args.has_body {
match data {
@@ -278,6 +278,11 @@ where
}
}
} else {
+ // POST and PUT requests should always have a 0 length content-length,
+ // if there is no body. https://fetch.spec.whatwg.org/#http-network-or-cache-fetch
+ if matches!(method, Method::POST | Method::PUT) {
+ request = request.header(CONTENT_LENGTH, HeaderValue::from(0));
+ }
None
};