tower_helmet/header/
cross_origin_resource_policy.rs1use std::fmt::{Display, Formatter};
2
3use http::header::{HeaderName, InvalidHeaderValue};
4use http::HeaderValue;
5
6use crate::IntoHeader;
7
8#[derive(Debug, Clone, Copy, Default)]
11pub enum CrossOriginResourcePolicy {
12 SameSite,
13 #[default]
14 SameOrigin,
15 CrossOrigin,
16}
17
18impl Display for CrossOriginResourcePolicy {
19 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
20 let s = match self {
21 CrossOriginResourcePolicy::SameSite => "same-site",
22 CrossOriginResourcePolicy::SameOrigin => "same-origin",
23 CrossOriginResourcePolicy::CrossOrigin => "cross-origin",
24 };
25
26 write!(f, "{}", s)
27 }
28}
29
30impl IntoHeader for CrossOriginResourcePolicy {
31 fn header_name(&self) -> HeaderName {
32 HeaderName::from_static("cross-origin-resource-policy")
33 }
34
35 fn header_value(&self) -> Result<HeaderValue, InvalidHeaderValue> {
36 HeaderValue::from_str(self.to_string().as_str())
37 }
38}