pub enum OriginPolicy {
SameOriginOrLoopback,
AllowList(Vec<String>),
Disabled,
}Expand description
Validation policy for the Origin request header on the MCP endpoint.
Variants§
SameOriginOrLoopback
Default. Origin absent → allowed. Origin present → allowed only if
its host is loopback (localhost, 127.0.0.0/8, [::1]). Anything
else → HTTP 403.
The request’s Host header is not consulted: it is
attacker-controlled, and a rebinding attacker sets it to agree with
Origin. To serve a browser app from a non-loopback origin, name that
origin with OriginPolicy::AllowList. See ADR-031 (2026-08-15).
AllowList(Vec<String>)
OriginPolicy::SameOriginOrLoopback semantics plus an explicit
allowlist of origins (scheme://host[:port]; host compared
case-insensitively, default-port normalized). The literal entry
"null" admits Origin: null.
Disabled
No validation — for deployments that enforce origin upstream (API Gateway / ALB / reverse proxy) or are not browser-reachable.
Trait Implementations§
Source§impl Clone for OriginPolicy
impl Clone for OriginPolicy
Source§fn clone(&self) -> OriginPolicy
fn clone(&self) -> OriginPolicy
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 OriginPolicy
impl Debug for OriginPolicy
Source§impl Default for OriginPolicy
impl Default for OriginPolicy
Source§fn default() -> OriginPolicy
fn default() -> OriginPolicy
impl Eq for OriginPolicy
Source§impl PartialEq for OriginPolicy
impl PartialEq for OriginPolicy
impl StructuralPartialEq for OriginPolicy
Auto Trait Implementations§
impl Freeze for OriginPolicy
impl RefUnwindSafe for OriginPolicy
impl Send for OriginPolicy
impl Sync for OriginPolicy
impl Unpin for OriginPolicy
impl UnsafeUnpin for OriginPolicy
impl UnwindSafe for OriginPolicy
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
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.