diff options
author | Mathieu Hordesseaux <mathieu@adopteunmec.com> | 2016-10-03 13:43:59 +0200 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2017-02-23 18:55:52 -0500 |
commit | 6f97ce826b582fa5e6b77013cdf181a18febb859 (patch) | |
tree | a71fc0db5637a1fc45fb85061fa34cd7f061e350 /components/script/dom/request.rs | |
parent | ec5ed8edfdfac1cf0692af813217ee7e21620139 (diff) | |
download | servo-6f97ce826b582fa5e6b77013cdf181a18febb859.tar.gz servo-6f97ce826b582fa5e6b77013cdf181a18febb859.zip |
Make Request throw less often (fixes #13457)
Diffstat (limited to 'components/script/dom/request.rs')
-rw-r--r-- | components/script/dom/request.rs | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs index a81d9f767b6..7b9f21c270e 100644 --- a/components/script/dom/request.rs +++ b/components/script/dom/request.rs @@ -183,9 +183,8 @@ impl Request { !init.window.handle().is_undefined() { // Step 13.1 if request.mode == NetTraitsRequestMode::Navigate { - return Err(Error::Type( - "Init is present and request mode is 'navigate'".to_string())); - } + request.mode = NetTraitsRequestMode::SameOrigin; + } // Step 13.2 request.omit_origin_header.set(false); // Step 13.3 @@ -211,17 +210,13 @@ impl Request { } // Step 14.5 if let Ok(parsed_referrer) = parsed_referrer { - if parsed_referrer.cannot_be_a_base() && + if (parsed_referrer.cannot_be_a_base() && parsed_referrer.scheme() == "about" && - parsed_referrer.path() == "client" { + parsed_referrer.path() == "client") || + parsed_referrer.origin() != origin { *request.referrer.borrow_mut() = NetTraitsRequestReferrer::Client; } else { // Step 14.6 - if parsed_referrer.origin() != origin { - return Err(Error::Type( - "RequestInit's referrer has invalid origin".to_string())); - } - // Step 14.7 *request.referrer.borrow_mut() = NetTraitsRequestReferrer::ReferrerUrl(parsed_referrer); } } @@ -576,7 +571,7 @@ impl RequestMethods for Request { let referrer = r.referrer.borrow(); USVString(match &*referrer { &NetTraitsRequestReferrer::NoReferrer => String::from("no-referrer"), - &NetTraitsRequestReferrer::Client => String::from("client"), + &NetTraitsRequestReferrer::Client => String::from("about:client"), &NetTraitsRequestReferrer::ReferrerUrl(ref u) => { let u_c = u.clone(); u_c.into_string() |