mirror of
https://github.com/lexmount/moli.git
synced 2026-10-06 08:00:59 +00:00
fix(fetch): inherit document policy for empty request referrers
This commit is contained in:
@@ -74,7 +74,8 @@ pub fn referrer_value(
|
||||
}
|
||||
|
||||
let policy = referrer_policy
|
||||
.or(document_referrer_policy)
|
||||
.filter(|policy| !policy.is_empty())
|
||||
.or_else(|| document_referrer_policy.filter(|policy| !policy.is_empty()))
|
||||
.unwrap_or(DEFAULT_REFERRER_POLICY);
|
||||
let same_origin = same_origin(referrer_url, request_url);
|
||||
let downgrade = is_downgrade_request(referrer_url, request_url);
|
||||
@@ -310,3 +311,34 @@ mod tests {
|
||||
assert_eq!(referrer_header_value(&source, &target, None, None), None);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod empty_policy_tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn empty_request_policy_inherits_the_document_policy() {
|
||||
let source = Url::parse("https://origin.test/private?token=value").unwrap();
|
||||
let target = Url::parse("https://destination.test/resource").unwrap();
|
||||
for request_policy in [None, Some("")] {
|
||||
assert_eq!(
|
||||
referrer_value(&source, &target, request_policy, Some("no-referrer")),
|
||||
None
|
||||
);
|
||||
assert_eq!(
|
||||
referrer_value(&source, &target, request_policy, Some("unsafe-url")),
|
||||
Some(source.to_string())
|
||||
);
|
||||
}
|
||||
assert_eq!(
|
||||
referrer_value(&source, &target, Some("origin"), Some("no-referrer")),
|
||||
Some("https://origin.test/".to_owned())
|
||||
);
|
||||
for document_policy in [None, Some("")] {
|
||||
assert_eq!(
|
||||
referrer_value(&source, &target, Some(""), document_policy),
|
||||
Some("https://origin.test/".to_owned())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user