#[non_exhaustive]pub struct CorsHeaders {
pub allow_origin: Option<CorsOrigin>,
pub allow_methods: Option<Vec<String>>,
pub allow_headers: Option<Vec<String>>,
pub expose_headers: Option<Vec<String>>,
pub max_age: Option<u64>,
pub allow_credentials: Option<bool>,
}Expand description
Structured CORS response headers.
All fields are Option so that headers can be omitted when not needed.
Use the builder methods to set individual fields.
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: Option<CorsOrigin>Access-Control-Allow-Origin
allow_methods: Option<Vec<String>>Access-Control-Allow-Methods
allow_headers: Option<Vec<String>>Access-Control-Allow-Headers
expose_headers: Option<Vec<String>>Access-Control-Expose-Headers
max_age: Option<u64>Access-Control-Max-Age (seconds)
allow_credentials: Option<bool>Access-Control-Allow-Credentials
Implementations§
Source§impl CorsHeaders
impl CorsHeaders
Sourcepub fn allow_origin(self, origin: CorsOrigin) -> Self
pub fn allow_origin(self, origin: CorsOrigin) -> Self
Set Access-Control-Allow-Origin.
use api_bones::cors::{CorsHeaders, CorsOrigin};
let cors = CorsHeaders::new().allow_origin(CorsOrigin::Any);
assert_eq!(cors.allow_origin.unwrap().to_string(), "*");Sourcepub fn allow_methods<I>(self, methods: I) -> Self
pub fn allow_methods<I>(self, methods: I) -> Self
Set Access-Control-Allow-Methods from an iterator of method strings.
use api_bones::cors::CorsHeaders;
let cors = CorsHeaders::new().allow_methods(["GET", "POST"]);
let methods = cors.allow_methods.unwrap();
assert!(methods.contains(&"GET".to_string()));Sourcepub fn allow_headers<I>(self, headers: I) -> Self
pub fn allow_headers<I>(self, headers: I) -> Self
Set Access-Control-Allow-Headers from an iterator of header names.
Sourcepub fn expose_headers<I>(self, headers: I) -> Self
pub fn expose_headers<I>(self, headers: I) -> Self
Set Access-Control-Expose-Headers from an iterator of header names.
Sourcepub fn allow_credentials(self, allow: bool) -> Self
pub fn allow_credentials(self, allow: bool) -> Self
Set Access-Control-Allow-Credentials.
Note: per the spec, Allow-Credentials: true is incompatible with
Allow-Origin: *. This is not enforced at the type level but callers
should be careful.
Sourcepub fn preflight<M, H>(origin: CorsOrigin, methods: M, headers: H) -> Self
pub fn preflight<M, H>(origin: CorsOrigin, methods: M, headers: H) -> Self
Build a preflight (OPTIONS) response with sensible defaults.
Sets Allow-Origin, Allow-Methods, and Allow-Headers. Does not set
Allow-Credentials (default: absent, treated as false by browsers).
use api_bones::cors::{CorsHeaders, CorsOrigin};
let preflight = CorsHeaders::preflight(
CorsOrigin::Origin("https://example.com".into()),
["GET", "POST"],
["Content-Type"],
);
assert!(preflight.allow_methods.is_some());
assert!(preflight.allow_headers.is_some());Sourcepub fn allow_methods_header(&self) -> Option<String>
pub fn allow_methods_header(&self) -> Option<String>
Render the Access-Control-Allow-Methods value as a comma-separated string.
Returns None if the field is not set.
Sourcepub fn allow_headers_header(&self) -> Option<String>
pub fn allow_headers_header(&self) -> Option<String>
Render the Access-Control-Allow-Headers value as a comma-separated string.
Returns None if the field is not set.
Sourcepub fn expose_headers_header(&self) -> Option<String>
pub fn expose_headers_header(&self) -> Option<String>
Render the Access-Control-Expose-Headers value as a comma-separated string.
Returns None if the field is not set.
Trait Implementations§
Source§impl Clone for CorsHeaders
impl Clone for CorsHeaders
Source§fn clone(&self) -> CorsHeaders
fn clone(&self) -> CorsHeaders
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more