Enum SourceExpression
pub enum SourceExpression {
Show 14 variants
SelfOrigin,
None,
UnsafeInline,
UnsafeEval,
StrictDynamic,
UnsafeHashes,
WasmUnsafeEval,
ReportSample,
InlineSpeculationRules,
Wildcard,
Scheme(Protocol),
Host(HostSource),
Nonce(Cow<'static, str>),
Hash {
algorithm: HashAlgorithm,
value: Cow<'static, str>,
},
}http only.Expand description
One CSP source expression — the building block of a source-list.
Every variant has a canonical wire form defined by
CSP Level 3 § 2.3;
see fmt::Display for the mapping.
Variants§
SelfOrigin
Same-origin sources only.
None
No sources are permitted. Per spec must appear alone in a list.
UnsafeInline
Permit inline <script> / <style> blocks and inline event
handlers — generally a bad idea on a hardened policy.
UnsafeEval
Permit eval and related JS APIs.
StrictDynamic
Trust scripts loaded by a nonced / hashed script, ignoring the rest of the source list.
UnsafeHashes
Permit specific inline event handlers / style attributes via a matching hash source.
WasmUnsafeEval
Permit WebAssembly.instantiate from buffers (not just from
fetched script sources).
ReportSample
Include a sample of the violation in CSP reports.
InlineSpeculationRules
Permit inline <script type="speculationrules"> blocks.
Wildcard
Match any source (*). Equivalent to “no restriction” — only
useful for testing.
Scheme(Protocol)
A whole scheme (e.g. data:, blob:, mediastream:). The
trailing : is emitted by the serialiser.
Host(HostSource)
A host source — scheme/host/port/path combination, see
HostSource.
Nonce(Cow<'static, str>)
'nonce-<base64>' — pairs with nonce="…" on the inline element.
Hash
'<algo>-<base64>' matching an inline script or style.
Fields
algorithm: HashAlgorithmImplementations§
§impl SourceExpression
impl SourceExpression
pub fn scheme(scheme: impl Into<Protocol>) -> SourceExpression
pub fn scheme(scheme: impl Into<Protocol>) -> SourceExpression
Build a SourceExpression::Scheme from a Protocol (or
anything convertible into one).
pub fn host(host: impl Into<HostSource>) -> SourceExpression
pub fn host(host: impl Into<HostSource>) -> SourceExpression
Build a SourceExpression::Host from anything convertible
into a HostSource (e.g. a Domain or a host-source
string via HostSource::try_parse).
pub fn nonce(nonce: impl Into<Cow<'static, str>>) -> SourceExpression
pub fn nonce(nonce: impl Into<Cow<'static, str>>) -> SourceExpression
Build a SourceExpression::Nonce.
pub fn hash(
algorithm: HashAlgorithm,
value: impl Into<Cow<'static, str>>,
) -> SourceExpression
pub fn hash( algorithm: HashAlgorithm, value: impl Into<Cow<'static, str>>, ) -> SourceExpression
Build a SourceExpression::Hash.
Trait Implementations§
§impl Clone for SourceExpression
impl Clone for SourceExpression
§fn clone(&self) -> SourceExpression
fn clone(&self) -> SourceExpression
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 SourceExpression
impl Debug for SourceExpression
§impl Display for SourceExpression
impl Display for SourceExpression
§impl From<Domain> for SourceExpression
impl From<Domain> for SourceExpression
§fn from(d: Domain) -> SourceExpression
fn from(d: Domain) -> SourceExpression
§impl From<HostSource> for SourceExpression
impl From<HostSource> for SourceExpression
§fn from(h: HostSource) -> SourceExpression
fn from(h: HostSource) -> SourceExpression
§impl From<Protocol> for SourceExpression
impl From<Protocol> for SourceExpression
§fn from(p: Protocol) -> SourceExpression
fn from(p: Protocol) -> SourceExpression
§impl From<SourceExpression> for SourceList
impl From<SourceExpression> for SourceList
§fn from(expr: SourceExpression) -> SourceList
fn from(expr: SourceExpression) -> SourceList
§impl FromStr for SourceExpression
impl FromStr for SourceExpression
§impl Hash for SourceExpression
impl Hash for SourceExpression
§impl PartialEq for SourceExpression
impl PartialEq for SourceExpression
§fn eq(&self, other: &SourceExpression) -> bool
fn eq(&self, other: &SourceExpression) -> bool
self and other values to be equal, and is used by ==.impl Eq for SourceExpression
impl StructuralPartialEq for SourceExpression
Auto Trait Implementations§
impl Freeze for SourceExpression
impl RefUnwindSafe for SourceExpression
impl Send for SourceExpression
impl Sync for SourceExpression
impl Unpin for SourceExpression
impl UnsafeUnpin for SourceExpression
impl UnwindSafe for SourceExpression
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
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> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.
§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