Struct rocket_cors::CorsOptions
source · pub struct CorsOptions {
pub allowed_origins: AllowedOrigins,
pub allowed_methods: AllowedMethods,
pub allowed_headers: AllowedHeaders,
pub allow_credentials: bool,
pub expose_headers: HashSet<String>,
pub max_age: Option<usize>,
pub send_wildcard: bool,
pub fairing_route_base: String,
pub fairing_route_rank: isize,
}
Expand description
Configuration options for CORS request handling.
You create a new copy of this struct by defining the configurations in the fields below.
This struct can also be deserialized by serde with the serialization
feature which is
enabled by default.
Default
is implemented for this
struct. The default for each field is described in the documentation for the field.
Before you can use this with Rocket, you will need to call the CorsOptions::to_cors
method.
Examples
You can run an example from the repository to demonstrate the JSON serialization with
cargo run --example json
.
Pure default
let default = rocket_cors::CorsOptions::default();
JSON Examples
Default
{
"allowed_origins": "All",
"allowed_methods": [
"POST",
"PATCH",
"PUT",
"DELETE",
"HEAD",
"OPTIONS",
"GET"
],
"allowed_headers": "All",
"allow_credentials": false,
"expose_headers": [],
"max_age": null,
"send_wildcard": false,
"fairing_route_base": "/cors",
"fairing_route_rank": 0
}
Defined
{
"allowed_origins": {
"Some": {
"exact": ["https://www.acme.com"],
"regex": ["^https://www.example-[A-z0-9]*.com$"]
}
},
"allowed_methods": [
"POST",
"DELETE",
"GET"
],
"allowed_headers": {
"Some": [
"Accept",
"Authorization"
]
},
"allow_credentials": true,
"expose_headers": [
"Content-Type",
"X-Custom"
],
"max_age": 42,
"send_wildcard": false,
"fairing_route_base": "/mycors"
}
Fields§
§allowed_origins: AllowedOrigins
Origins that are allowed to make requests.
Will be verified against the Origin
request header.
When All
is set, and send_wildcard
is set, “*” will be sent in
the Access-Control-Allow-Origin
response header. Otherwise, the client’s Origin
request
header will be echoed back in the Access-Control-Allow-Origin
response header.
When Some
is set, the client’s Origin
request header will be checked in a
case-sensitive manner.
This is the list of origins
in the
Resource Processing Model.
Defaults to All
.
allowed_methods: AllowedMethods
The list of methods which the allowed origins are allowed to access for non-simple requests.
This is the list of methods
in the
Resource Processing Model.
Defaults to [GET, HEAD, POST, OPTIONS, PUT, PATCH, DELETE]
allowed_headers: AllowedHeaders
The list of header field names which can be used when this resource is accessed by allowed origins.
If All
is set, whatever is requested by the client in Access-Control-Request-Headers
will be echoed back in the Access-Control-Allow-Headers
header.
This is the list of headers
in the
Resource Processing Model.
Defaults to All
.
allow_credentials: bool
Allows users to make authenticated requests.
If true, injects the Access-Control-Allow-Credentials
header in responses.
This allows cookies and credentials to be submitted across domains.
This CANNOT be used in conjunction with allowed_origins
set to All
and
send_wildcard
set to true
. Depending on the mode of usage, this will either result
in an Error::CredentialsWithWildcardOrigin
error during Rocket launch or runtime.
Defaults to false
.
expose_headers: HashSet<String>
The list of headers which are safe to expose to the API of a CORS API specification.
This corresponds to the Access-Control-Expose-Headers
responde header.
This is the list of exposed headers
in the
Resource Processing Model.
This defaults to an empty set.
max_age: Option<usize>
The maximum time for which this CORS request maybe cached. This value is set as the
Access-Control-Max-Age
header.
This defaults to None
(unset).
send_wildcard: bool
If true, and the allowed_origins
parameter is All
, a wildcard
Access-Control-Allow-Origin
response header is sent, rather than the request’s
Origin
header.
This is the supports credentials flag
in the
Resource Processing Model.
This CANNOT be used in conjunction with allowed_origins
set to All
and
allow_credentials
set to true
. Depending on the mode of usage, this will either result
in an Error::CredentialsWithWildcardOrigin
error during Rocket launch or runtime.
Defaults to false
.
fairing_route_base: String
When used as Fairing, Cors will need to redirect failed CORS checks to a custom route mounted by the fairing. Specify the base of the route so that it doesn’t clash with any of your existing routes.
Defaults to “/cors”
fairing_route_rank: isize
When used as Fairing, Cors will need to redirect failed CORS checks to a custom route mounted by the fairing. Specify the rank of the route so that it doesn’t clash with any of your existing routes. Remember that a higher ranked route has lower priority.
Defaults to 0
Implementations§
source§impl CorsOptions
impl CorsOptions
sourcepub fn validate(&self) -> Result<(), Error>
pub fn validate(&self) -> Result<(), Error>
Validates if any of the settings are disallowed, incorrect, or illegal
sourcepub fn to_cors(&self) -> Result<Cors, Error>
pub fn to_cors(&self) -> Result<Cors, Error>
Creates a Cors
struct that can be used to respond to requests or as a Rocket Fairing
sourcepub fn allowed_origins(self, allowed_origins: AllowedOrigins) -> Self
pub fn allowed_origins(self, allowed_origins: AllowedOrigins) -> Self
Sets the allowed origins
sourcepub fn allowed_methods(self, allowed_methods: AllowedMethods) -> Self
pub fn allowed_methods(self, allowed_methods: AllowedMethods) -> Self
Sets the allowed methods
sourcepub fn allowed_headers(self, allowed_headers: AllowedHeaders) -> Self
pub fn allowed_headers(self, allowed_headers: AllowedHeaders) -> Self
Sets the allowed headers
sourcepub fn allow_credentials(self, allow_credentials: bool) -> Self
pub fn allow_credentials(self, allow_credentials: bool) -> Self
Marks if credentials are allowed
sourcepub fn expose_headers(self, expose_headers: HashSet<String>) -> Self
pub fn expose_headers(self, expose_headers: HashSet<String>) -> Self
Sets the expose headers
sourcepub fn send_wildcard(self, send_wildcard: bool) -> Self
pub fn send_wildcard(self, send_wildcard: bool) -> Self
Marks if wildcards are send
sourcepub fn fairing_route_base<S: Into<String>>(self, fairing_route_base: S) -> Self
pub fn fairing_route_base<S: Into<String>>(self, fairing_route_base: S) -> Self
Sets the base of the fairing route
sourcepub fn fairing_route_rank(self, fairing_route_rank: isize) -> Self
pub fn fairing_route_rank(self, fairing_route_rank: isize) -> Self
Sets the rank of the fairing route
Trait Implementations§
source§impl Clone for CorsOptions
impl Clone for CorsOptions
source§fn clone(&self) -> CorsOptions
fn clone(&self) -> CorsOptions
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for CorsOptions
impl Debug for CorsOptions
source§impl Default for CorsOptions
impl Default for CorsOptions
source§impl<'de> Deserialize<'de> for CorsOptions
impl<'de> Deserialize<'de> for CorsOptions
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl PartialEq for CorsOptions
impl PartialEq for CorsOptions
source§fn eq(&self, other: &CorsOptions) -> bool
fn eq(&self, other: &CorsOptions) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for CorsOptions
impl Serialize for CorsOptions
impl Eq for CorsOptions
impl StructuralEq for CorsOptions
impl StructuralPartialEq for CorsOptions
Auto Trait Implementations§
impl RefUnwindSafe for CorsOptions
impl Send for CorsOptions
impl Sync for CorsOptions
impl Unpin for CorsOptions
impl UnwindSafe for CorsOptions
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<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
§fn into_collection<A>(self) -> SmallVec<A>where
A: Array<Item = T>,
fn into_collection<A>(self) -> SmallVec<A>where A: Array<Item = T>,
self
into a collection.fn mapped<U, F, A>(self, f: F) -> SmallVec<A>where F: FnMut(T) -> U, A: Array<Item = U>,
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);