Fix content-type when creating a Request with FormData body (#36194)

When you create a `Request` object with a `FormData` body, the spec
says that the `Content-Type` header should start with
`multipart/form-data; boundary=`. However, in Servo's implementation
it started with `multipart/form-data;boundary=`, without the space.

While all reasonable servers should be able to that headers whether
the space is present or not, this brings Servo closer to the spec, and
also makes some WPT tests pass.

Note that submitting a form with `enctype="multipart/form-data"` does
produce a `Content-Type` header with the space (see
`HTMLFormElement::submit_entity_body`).

Signed-off-by: Andreu Botella <abotella@igalia.com>
This commit is contained in:
Andreu Botella 2025-03-28 14:33:07 +01:00 committed by GitHub
parent c728f31a10
commit 482d28e4ff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 7 additions and 26 deletions

View file

@ -539,7 +539,7 @@ impl Extractable for FormData {
let bytes = encode_multipart_form_data(&mut self.datums(), boundary.clone(), UTF_8);
let total_bytes = bytes.len();
let content_type = Some(DOMString::from(format!(
"multipart/form-data;boundary={}",
"multipart/form-data; boundary={}",
boundary
)));
let stream = ReadableStream::new_from_bytes(global, bytes, can_gc)?;