#[non_exhaustive]pub struct CorsConfig {
pub allow_origin: String,
pub allow_methods: String,
pub allow_headers: String,
pub max_age_secs: u32,
}Expand description
CORS configuration for A2A dispatchers.
§Examples
use a2a_protocol_server::dispatch::cors::CorsConfig;
// Allow all origins (development/testing).
let cors = CorsConfig::permissive();
// Restrict to a specific origin.
let cors = CorsConfig::new("https://my-app.example.com");#[non_exhaustive]: build it with CorsConfig::new or
CorsConfig::permissive and the with_* setters, which cover every
field; a struct literal is not available outside this crate, so a field
added later does not break callers.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.allow_origin: StringThe Access-Control-Allow-Origin value.
allow_methods: StringThe Access-Control-Allow-Methods value.
allow_headers: StringThe Access-Control-Allow-Headers value.
max_age_secs: u32The Access-Control-Max-Age value in seconds.
Implementations§
Source§impl CorsConfig
impl CorsConfig
Sourcepub fn new(allow_origin: impl Into<String>) -> Self
pub fn new(allow_origin: impl Into<String>) -> Self
Creates a new CorsConfig with the given allowed origin.
Sourcepub fn permissive() -> Self
pub fn permissive() -> Self
Creates a permissive CorsConfig that allows all origins.
Suitable for development or public APIs. For production use,
prefer CorsConfig::new with a specific origin.
Sourcepub fn with_allow_origin(self, origin: impl Into<String>) -> Self
pub fn with_allow_origin(self, origin: impl Into<String>) -> Self
Sets the Access-Control-Allow-Origin value.
Sourcepub fn with_allow_methods(self, methods: impl Into<String>) -> Self
pub fn with_allow_methods(self, methods: impl Into<String>) -> Self
Sets the Access-Control-Allow-Methods value.
Sourcepub fn with_allow_headers(self, headers: impl Into<String>) -> Self
pub fn with_allow_headers(self, headers: impl Into<String>) -> Self
Sets the Access-Control-Allow-Headers value, replacing the default
list — include content-type, a2a-version and whatever your clients
send, or their preflight fails.
Sourcepub const fn with_max_age_secs(self, secs: u32) -> Self
pub const fn with_max_age_secs(self, secs: u32) -> Self
Sets the Access-Control-Max-Age value in seconds.
Sourcepub fn apply_headers<B>(&self, resp: &mut Response<B>)
pub fn apply_headers<B>(&self, resp: &mut Response<B>)
Applies CORS headers to an existing HTTP response.
Sourcepub fn preflight_response(&self) -> Response<BoxBody<Bytes, Infallible>>
pub fn preflight_response(&self) -> Response<BoxBody<Bytes, Infallible>>
Builds a preflight (OPTIONS) response with CORS headers.
Trait Implementations§
Source§impl Clone for CorsConfig
impl Clone for CorsConfig
Auto Trait Implementations§
impl Freeze for CorsConfig
impl RefUnwindSafe for CorsConfig
impl Send for CorsConfig
impl Sync for CorsConfig
impl Unpin for CorsConfig
impl UnsafeUnpin for CorsConfig
impl UnwindSafe for CorsConfig
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<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request