mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Stop handling a None referrer policy in determine_request_referrer().
This commit is contained in:
parent
0fe94a6724
commit
3a27fda368
2 changed files with 12 additions and 13 deletions
|
@ -150,9 +150,8 @@ pub fn main_fetch(request: Rc<Request>,
|
||||||
// currently the clients themselves set referrer policy in RequestInit
|
// currently the clients themselves set referrer policy in RequestInit
|
||||||
|
|
||||||
// Step 7
|
// Step 7
|
||||||
if request.referrer_policy.get().is_none() {
|
let referrer_policy = request.referrer_policy.get().unwrap_or(ReferrerPolicy::NoReferrerWhenDowngrade);
|
||||||
request.referrer_policy.set(Some(ReferrerPolicy::NoReferrerWhenDowngrade));
|
request.referrer_policy.set(Some(referrer_policy));
|
||||||
}
|
|
||||||
|
|
||||||
// Step 8
|
// Step 8
|
||||||
if *request.referrer.borrow() != Referrer::NoReferrer {
|
if *request.referrer.borrow() != Referrer::NoReferrer {
|
||||||
|
@ -160,7 +159,7 @@ pub fn main_fetch(request: Rc<Request>,
|
||||||
// this stops the assertion in determine_request_referrer from failing
|
// this stops the assertion in determine_request_referrer from failing
|
||||||
request.headers.borrow_mut().remove::<RefererHeader>();
|
request.headers.borrow_mut().remove::<RefererHeader>();
|
||||||
let referrer_url = determine_request_referrer(&mut *request.headers.borrow_mut(),
|
let referrer_url = determine_request_referrer(&mut *request.headers.borrow_mut(),
|
||||||
request.referrer_policy.get(),
|
referrer_policy,
|
||||||
request.referrer.borrow_mut().take(),
|
request.referrer.borrow_mut().take(),
|
||||||
request.current_url().clone());
|
request.current_url().clone());
|
||||||
*request.referrer.borrow_mut() = Referrer::from_url(referrer_url);
|
*request.referrer.borrow_mut() = Referrer::from_url(referrer_url);
|
||||||
|
|
|
@ -277,7 +277,7 @@ fn strip_url(mut referrer_url: ServoUrl, origin_only: bool) -> Option<ServoUrl>
|
||||||
|
|
||||||
/// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
|
/// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
|
||||||
pub fn determine_request_referrer(headers: &mut Headers,
|
pub fn determine_request_referrer(headers: &mut Headers,
|
||||||
referrer_policy: Option<ReferrerPolicy>,
|
referrer_policy: ReferrerPolicy,
|
||||||
referrer_url: Option<ServoUrl>,
|
referrer_url: Option<ServoUrl>,
|
||||||
url: ServoUrl) -> Option<ServoUrl> {
|
url: ServoUrl) -> Option<ServoUrl> {
|
||||||
//TODO - algorithm step 2 not addressed
|
//TODO - algorithm step 2 not addressed
|
||||||
|
@ -285,14 +285,14 @@ pub fn determine_request_referrer(headers: &mut Headers,
|
||||||
if let Some(ref_url) = referrer_url {
|
if let Some(ref_url) = referrer_url {
|
||||||
let cross_origin = ref_url.origin() != url.origin();
|
let cross_origin = ref_url.origin() != url.origin();
|
||||||
return match referrer_policy {
|
return match referrer_policy {
|
||||||
Some(ReferrerPolicy::NoReferrer) => None,
|
ReferrerPolicy::NoReferrer => None,
|
||||||
Some(ReferrerPolicy::Origin) => strip_url(ref_url, true),
|
ReferrerPolicy::Origin => strip_url(ref_url, true),
|
||||||
Some(ReferrerPolicy::SameOrigin) => if cross_origin { None } else { strip_url(ref_url, false) },
|
ReferrerPolicy::SameOrigin => if cross_origin { None } else { strip_url(ref_url, false) },
|
||||||
Some(ReferrerPolicy::UnsafeUrl) => strip_url(ref_url, false),
|
ReferrerPolicy::UnsafeUrl => strip_url(ref_url, false),
|
||||||
Some(ReferrerPolicy::OriginWhenCrossOrigin) => strip_url(ref_url, cross_origin),
|
ReferrerPolicy::OriginWhenCrossOrigin => strip_url(ref_url, cross_origin),
|
||||||
Some(ReferrerPolicy::StrictOrigin) => strict_origin(ref_url, url),
|
ReferrerPolicy::StrictOrigin => strict_origin(ref_url, url),
|
||||||
Some(ReferrerPolicy::StrictOriginWhenCrossOrigin) => strict_origin_when_cross_origin(ref_url, url),
|
ReferrerPolicy::StrictOriginWhenCrossOrigin => strict_origin_when_cross_origin(ref_url, url),
|
||||||
Some(ReferrerPolicy::NoReferrerWhenDowngrade) | None =>
|
ReferrerPolicy::NoReferrerWhenDowngrade =>
|
||||||
no_referrer_when_downgrade_header(ref_url, url),
|
no_referrer_when_downgrade_header(ref_url, url),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue