diff --git a/actix-web/CHANGES.md b/actix-web/CHANGES.md index a79f6a9c..b1f1d7ab 100644 --- a/actix-web/CHANGES.md +++ b/actix-web/CHANGES.md @@ -5,6 +5,7 @@ - Minimum supported Rust version (MSRV) is now 1.75. - Add `http::header::ContentLocation` typed header. - Add `http::header::Location` typed header. +- Add `http::header::Referer` typed header. ## 4.9.0 diff --git a/actix-web/src/http/header/mod.rs b/actix-web/src/http/header/mod.rs index 44e47e82..653c44ce 100644 --- a/actix-web/src/http/header/mod.rs +++ b/actix-web/src/http/header/mod.rs @@ -44,6 +44,7 @@ mod location; mod macros; mod preference; mod range; +mod referer; #[cfg(test)] pub(crate) use self::macros::common_header_test; @@ -75,6 +76,7 @@ pub use self::{ location::Location, preference::Preference, range::{ByteRangeSpec, Range}, + referer::Referer, }; /// Format writer ([`fmt::Write`]) for a [`BytesMut`]. diff --git a/actix-web/src/http/header/referer.rs b/actix-web/src/http/header/referer.rs new file mode 100644 index 00000000..f8135532 --- /dev/null +++ b/actix-web/src/http/header/referer.rs @@ -0,0 +1,36 @@ +use super::{Uri, REFERER}; + +crate::http::header::common_header! { + /// `Referer` header, defined + /// in [RFC 7231 ยง5.5.2](https://datatracker.ietf.org/doc/html/rfc7231#section-5.5.2) + /// + /// The "Referer" (sic) header field allows the user agent to specify a + /// URI reference for the resource from which the target URI was obtained + /// (i.e., the "referrer", though the field name is misspelled). + /// + /// # ABNF + /// ```plain + /// Referer = absolute-URI / partial-URI + /// ``` + /// + /// # Example Values + /// * `http://www.example.org/hypertext/Overview.html` + /// + /// # Examples + /// + /// ``` + /// use actix_web::HttpResponse; + /// use actix_http::Uri; + /// use actix_web::http::header::Referer; + /// + /// let mut builder = HttpResponse::Ok(); + /// builder.insert_header( + /// Referer("http://www.example.org".parse::().unwrap()) + /// ); + /// ``` + (Referer, REFERER) => [Uri] + + test_parse_and_format { + crate::http::header::common_header_test!(test1, [b"http://www.example.org/hypertext/Overview.html"]); + } +}