Struct ReferrerPolicy
pub struct ReferrerPolicy(/* private fields */);http only.Expand description
Referrer-Policy header, part of
Referrer Policy
The Referrer-Policy HTTP header specifies the referrer
policy that the user agent applies when determining what
referrer information should be included with requests made,
and with browsing contexts created from the context of the
protected resource.
§Fallback chains
Per the Referrer Policy spec § 3.2
the wire form is 1#policy-token — a comma-separated list where the
user agent walks RIGHT-TO-LEFT and picks the last token it
recognises. This lets a server ship a modern policy with a fallback
for older clients:
use rama_http_headers::ReferrerPolicy;
// Emits: `no-referrer, strict-origin-when-cross-origin`.
// A pre-CSP3 browser falls back to `no-referrer`; a modern browser
// picks `strict-origin-when-cross-origin`.
let rp = ReferrerPolicy::NO_REFERRER
.with_fallback(ReferrerPolicy::STRICT_ORIGIN_WHEN_CROSS_ORIGIN);with_fallback appends; emitted order is preserved on the wire
(oldest-known first → newest-known last).
§ABNF
Referrer-Policy: 1#policy-token
policy-token = "no-referrer" / "no-referrer-when-downgrade"
/ "same-origin" / "origin"
/ "origin-when-cross-origin" / "unsafe-url"
/ "strict-origin" / "strict-origin-when-cross-origin"§Example values
no-referrerno-referrer, strict-origin-when-cross-origin
§Example
use rama_http_headers::ReferrerPolicy;
let rp = ReferrerPolicy::NO_REFERRER;Implementations§
§impl ReferrerPolicy
impl ReferrerPolicy
pub const NO_REFERRER: ReferrerPolicy
pub const NO_REFERRER: ReferrerPolicy
no-referrer
pub const NO_REFERRER_WHEN_DOWNGRADE: ReferrerPolicy
pub const NO_REFERRER_WHEN_DOWNGRADE: ReferrerPolicy
no-referrer-when-downgrade
pub const SAME_ORIGIN: ReferrerPolicy
pub const SAME_ORIGIN: ReferrerPolicy
same-origin
pub const ORIGIN: ReferrerPolicy
pub const ORIGIN: ReferrerPolicy
origin
pub const ORIGIN_WHEN_CROSS_ORIGIN: ReferrerPolicy
pub const ORIGIN_WHEN_CROSS_ORIGIN: ReferrerPolicy
origin-when-cross-origin
pub const UNSAFE_URL: ReferrerPolicy
pub const UNSAFE_URL: ReferrerPolicy
unsafe-url
pub const STRICT_ORIGIN: ReferrerPolicy
pub const STRICT_ORIGIN: ReferrerPolicy
strict-origin
pub const STRICT_ORIGIN_WHEN_CROSS_ORIGIN: ReferrerPolicy
pub const STRICT_ORIGIN_WHEN_CROSS_ORIGIN: ReferrerPolicy
strict-origin-when-cross-origin
pub fn with_fallback(self, policy: ReferrerPolicy) -> ReferrerPolicy
pub fn with_fallback(self, policy: ReferrerPolicy) -> ReferrerPolicy
Append a fallback policy.
Multiple calls compound; emitted order is preserved on the wire (oldest-known first → newest-known last). Browsers walk right-to-left and select the last token they recognise, so the appended policy is the one a modern client will pick — call this on your older / pre-CSP3 baseline and pass the modern token you want.
The argument’s full policy list is appended in order (so chaining preserves any fallback chain it already carried).
pub fn set_fallback(&mut self, policy: ReferrerPolicy) -> &mut ReferrerPolicy
pub fn set_fallback(&mut self, policy: ReferrerPolicy) -> &mut ReferrerPolicy
Append a fallback policy.
Multiple calls compound; emitted order is preserved on the wire (oldest-known first → newest-known last). Browsers walk right-to-left and select the last token they recognise, so the appended policy is the one a modern client will pick — call this on your older / pre-CSP3 baseline and pass the modern token you want.
The argument’s full policy list is appended in order (so chaining preserves any fallback chain it already carried).
Trait Implementations§
§impl Clone for ReferrerPolicy
impl Clone for ReferrerPolicy
§fn clone(&self) -> ReferrerPolicy
fn clone(&self) -> ReferrerPolicy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more§impl Debug for ReferrerPolicy
impl Debug for ReferrerPolicy
impl Eq for ReferrerPolicy
§impl Hash for ReferrerPolicy
impl Hash for ReferrerPolicy
§impl HeaderDecode for ReferrerPolicy
impl HeaderDecode for ReferrerPolicy
§fn decode<'i, I>(values: &mut I) -> Result<ReferrerPolicy, Error>where
I: Iterator<Item = &'i HeaderValue>,
fn decode<'i, I>(values: &mut I) -> Result<ReferrerPolicy, Error>where
I: Iterator<Item = &'i HeaderValue>,
HeaderValues.§impl HeaderEncode for ReferrerPolicy
impl HeaderEncode for ReferrerPolicy
§fn encode<E>(&self, values: &mut E)where
E: Extend<HeaderValue>,
fn encode<E>(&self, values: &mut E)where
E: Extend<HeaderValue>,
HeaderValue, and add it to a container
which has HeaderValue type as each element. Read more§fn encode_to_value(&self) -> Option<HeaderValue>
fn encode_to_value(&self) -> Option<HeaderValue>
HeaderValue. Read more§impl PartialEq for ReferrerPolicy
impl PartialEq for ReferrerPolicy
impl StructuralPartialEq for ReferrerPolicy
§impl TypedHeader for ReferrerPolicy
impl TypedHeader for ReferrerPolicy
§fn name() -> &'static HeaderName
fn name() -> &'static HeaderName
Auto Trait Implementations§
impl Freeze for ReferrerPolicy
impl RefUnwindSafe for ReferrerPolicy
impl Send for ReferrerPolicy
impl Sync for ReferrerPolicy
impl Unpin for ReferrerPolicy
impl UnsafeUnpin for ReferrerPolicy
impl UnwindSafe for ReferrerPolicy
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
value to writer