Skip to main content

Origins

Struct Origins 

Source
pub struct Origins { /* private fields */ }
Expand description

The pair of origins a custom protocol lives between, and the sole entry point for turning a webview request into one the server may serve.

Implementations§

Source§

impl Origins

Source

pub fn new(scheme: &str, platform: Platform) -> Result<Origins, OriginError>

Builds the origin pair for a protocol named scheme on platform.

§Errors

OriginError::InvalidScheme if the name cannot serve as both a URL scheme and a DNS label.

Source

pub const fn canonical(&self) -> &Origin

The origin the server sees, on every platform.

Source

pub const fn platform(&self) -> &Origin

The origin the webview speaks on this platform.

Source

pub fn collides_with(&self, url: &str) -> bool

Whether url names the origin this protocol serves.

The shell uses this to refuse, at startup, an application whose public base URL is our own canonical origin: absolute URLs built from it would escape the protocol and be fetched for real, which is a broken image long after the mistake rather than an error at the moment of it.

Source

pub fn accept<B>(&self, request: Request<B>) -> Outcome<B>

Admits a request and rewrites it into the canonical origin.

Admission is only the question of address: a request naming somebody else’s origin is refused, and everything else is rewritten. Deciding whether a request may act is the server’s job, and this crate attaches no credential that would undermine the answer.

Origin and Referer are moved onto the canonical origin only when they were ours to begin with. A foreign value passes through untouched, so a server running its own origin checks still sees a stranger as a stranger.

Host is set, because no webview reliably sends one and a server comparing Origin against it needs both. Accept-Encoding is dropped, because nothing here is on a wire and WKWebView will not decode what it is handed anyway. Hop-by-hop headers go too, including the ones a Connection names - except Host, Origin and Referer, which a client does not get to delete.

Trait Implementations§

Source§

impl Clone for Origins

Source§

fn clone(&self) -> Origins

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Origins

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more