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>,
},
}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§
Source§impl SourceExpression
impl SourceExpression
Sourcepub fn scheme(scheme: impl Into<Protocol>) -> Self
pub fn scheme(scheme: impl Into<Protocol>) -> Self
Build a SourceExpression::Scheme from a Protocol (or
anything convertible into one).
Sourcepub fn host(host: impl Into<HostSource>) -> Self
pub fn host(host: impl Into<HostSource>) -> Self
Build a SourceExpression::Host from anything convertible
into a HostSource (e.g. a Domain or a host-source
string via HostSource::try_parse).
Sourcepub fn hash(
algorithm: HashAlgorithm,
value: impl Into<Cow<'static, str>>,
) -> Self
pub fn hash( algorithm: HashAlgorithm, value: impl Into<Cow<'static, str>>, ) -> Self
Build a SourceExpression::Hash.
Trait Implementations§
Source§impl Clone for SourceExpression
impl Clone for SourceExpression
Source§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 moreSource§impl Debug for SourceExpression
impl Debug for SourceExpression
Source§impl Display for SourceExpression
impl Display for SourceExpression
impl Eq for SourceExpression
Source§impl From<Domain> for SourceExpression
impl From<Domain> for SourceExpression
Source§impl From<HostSource> for SourceExpression
impl From<HostSource> for SourceExpression
Source§fn from(h: HostSource) -> Self
fn from(h: HostSource) -> Self
Source§impl From<Protocol> for SourceExpression
impl From<Protocol> for SourceExpression
Source§impl From<SourceExpression> for SourceList
impl From<SourceExpression> for SourceList
Source§fn from(expr: SourceExpression) -> Self
fn from(expr: SourceExpression) -> Self
Source§impl FromStr for SourceExpression
impl FromStr for SourceExpression
Source§impl Hash for SourceExpression
impl Hash for SourceExpression
Source§impl PartialEq for SourceExpression
impl PartialEq for SourceExpression
Source§fn eq(&self, other: &SourceExpression) -> bool
fn eq(&self, other: &SourceExpression) -> bool
self and other values to be equal, and is used by ==.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§
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,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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