From bf564cae5d709e23235d32594c5c3c587d778a38 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 3 Dec 2018 01:44:42 -0500 Subject: [PATCH 1/3] net: Log HTTP request headers. --- components/net/http_loader.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 66bdce34f89..21402e37209 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -1195,6 +1195,13 @@ fn http_network_fetch( .as_ref() .map(|_| uuid::Uuid::new_v4().to_simple().to_string()); + if log_enabled!(log::Level::Info) { + info!("request for {} ({:?})", url, request.method); + for header in request.headers.iter() { + info!(" - {:?}", header); + } + } + // XHR uses the default destination; other kinds of fetches (which haven't been implemented yet) // do not. Once we support other kinds of fetches we'll need to be more fine grained here // since things like image fetches are classified differently by devtools From 27c25116d3ad26cb4ba70f94da45818ec823ff72 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 3 Dec 2018 01:45:04 -0500 Subject: [PATCH 2/3] net: Suppress default ports in Origin header. --- components/net/http_loader.rs | 6 +++++- components/net/tests/http_loader.rs | 9 ++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 21402e37209..32371abe9f5 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -793,7 +793,11 @@ fn try_immutable_origin_to_hyper_origin(url_origin: &ImmutableOrigin) -> Option< match *url_origin { ImmutableOrigin::Opaque(_) => Some(HyperOrigin::NULL), ImmutableOrigin::Tuple(ref scheme, ref host, ref port) => { - HyperOrigin::try_from_parts(&scheme, &host.to_string(), Some(port.clone())).ok() + let port = match (scheme.as_ref(), port) { + ("http", 80) | ("https", 443) => None, + _ => Some(*port), + }; + HyperOrigin::try_from_parts(&scheme, &host.to_string(), port).ok() }, } } diff --git a/components/net/tests/http_loader.rs b/components/net/tests/http_loader.rs index 0854844f135..297d6de7e5a 100644 --- a/components/net/tests/http_loader.rs +++ b/components/net/tests/http_loader.rs @@ -1450,13 +1450,8 @@ fn test_origin_set() { ); let origin_url = ServoUrl::parse("http://example.com").unwrap(); - // XXX: Not sure about the Some(80) here. origin_url.origin() returns 80 for the port but origin_url returns None. - origin = Origin::try_from_parts( - origin_url.scheme(), - origin_url.host_str().unwrap(), - Some(80), - ) - .unwrap(); + origin = + Origin::try_from_parts(origin_url.scheme(), origin_url.host_str().unwrap(), None).unwrap(); // Test Origin header is set on Get request with CORS mode let mut request = Request::from_init(RequestInit { url: url.clone(), From 1c7cfafcc5891d1f07bf640e2d697c36d65a3222 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Mon, 3 Dec 2018 01:45:58 -0500 Subject: [PATCH 3/3] Don't alter query string when submitting form by POST. --- components/script/dom/htmlformelement.rs | 5 +++-- tests/wpt/metadata/MANIFEST.json | 4 ++-- tests/wpt/web-platform-tests/common/form-submission.py | 2 ++ .../forms/form-submission-0/submit-entity-body.html | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 89e2c9410ef..5469f0b7fc5 100755 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -459,7 +459,8 @@ impl HTMLFormElement { .headers .typed_insert(ContentType::from(mime::APPLICATION_WWW_FORM_URLENCODED)); - self.set_encoding_override(load_data.url.as_mut_url().query_pairs_mut()) + let mut url = load_data.url.clone(); + self.set_encoding_override(url.as_mut_url().query_pairs_mut()) .clear() .extend_pairs( form_data @@ -467,7 +468,7 @@ impl HTMLFormElement { .map(|field| (field.name.clone(), field.replace_value(charset))), ); - load_data.url.query().unwrap_or("").to_string().into_bytes() + url.query().unwrap_or("").to_string().into_bytes() }, FormEncType::FormDataEncoded => { let mime: Mime = format!("multipart/form-data; boundary={}", boundary) diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 85e13c0b839..f695ac81c34 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -452699,7 +452699,7 @@ "support" ], "common/form-submission.py": [ - "467875453c9dc64aac51add3f4a617d941820972", + "b296ac44c57c658ca9e3189e9f79b0f80677acba", "support" ], "common/get-host-info.sub.js": [ @@ -624959,7 +624959,7 @@ "testharness" ], "html/semantics/forms/form-submission-0/submit-entity-body.html": [ - "8363f39ff32cd165a28086b3c594b55a79ced8e5", + "a52bb0dcd2080eabb44ab1ddca379da6a5e5ea9a", "testharness" ], "html/semantics/forms/form-submission-0/submit-file.sub.html": [ diff --git a/tests/wpt/web-platform-tests/common/form-submission.py b/tests/wpt/web-platform-tests/common/form-submission.py index 467875453c9..b296ac44c57 100644 --- a/tests/wpt/web-platform-tests/common/form-submission.py +++ b/tests/wpt/web-platform-tests/common/form-submission.py @@ -6,5 +6,7 @@ def main(request, response): else: result = request.POST.first('foo') == 'bar' + result = result and request.url_parts.query == 'query=1' + return ([("Content-Type", "text/plain")], "OK" if result else "FAIL") diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html index 8363f39ff32..a52bb0dcd20 100644 --- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/submit-entity-body.html @@ -96,7 +96,7 @@ function run_simple_test() { var testframe = document.getElementById("testframe"); var testdocument = testframe.contentWindow.document; testdocument.body.innerHTML = - "
" + + "" + test_obj.input + test_obj.submitelement + "
";