diff --git a/components/script/dom/headers.rs b/components/script/dom/headers.rs index 1d1d98ac615..7d18913533c 100644 --- a/components/script/dom/headers.rs +++ b/components/script/dom/headers.rs @@ -214,10 +214,20 @@ impl HeadersMethods for Headers { } // Step 7 // https://fetch.spec.whatwg.org/#concept-header-list-set - self.header_list.borrow_mut().insert( - HeaderName::from_str(&valid_name).unwrap(), - HeaderValue::from_bytes(&valid_value).unwrap(), - ); + match HeaderValue::from_bytes(&valid_value) { + Ok(value) => { + self.header_list + .borrow_mut() + .insert(HeaderName::from_str(&valid_name).unwrap(), value); + }, + Err(_) => { + // can't add the header, but we don't need to panic the browser over it + warn!( + "Servo thinks \"{:?}\" is a valid HTTP header value but HeaderValue doesn't.", + valid_value + ); + }, + }; Ok(()) } } diff --git a/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini b/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini index 77555d7f864..df0095f85a1 100644 --- a/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini +++ b/tests/wpt/meta/fetch/api/headers/headers-normalize.any.js.ini @@ -1,11 +1,27 @@ [headers-normalize.any.worker.html] - expected: CRASH + [Create headers with not normalized values] + expected: FAIL + + [Check append method with not normalized values] + expected: FAIL + + [Check set method with not normalized values] + expected: FAIL + [headers-normalize.any.sharedworker.html] expected: ERROR [headers-normalize.any.html] - expected: CRASH + [Create headers with not normalized values] + expected: FAIL + + [Check append method with not normalized values] + expected: FAIL + + [Check set method with not normalized values] + expected: FAIL + [headers-normalize.any.serviceworker.html] expected: ERROR