Skip to content

Commit affaf3f

Browse files
authored
Merge pull request #373 from jbr/x-forwarded-host
add support for x-forwarded-host to proxies::Forwarded
2 parents 382bdf3 + 255c686 commit affaf3f

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/proxies/forwarded.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::{borrow::Cow, convert::TryFrom, fmt::Write, net::IpAddr};
88
const X_FORWARDED_FOR: HeaderName = HeaderName::from_lowercase_str("x-forwarded-for");
99
const X_FORWARDED_PROTO: HeaderName = HeaderName::from_lowercase_str("x-forwarded-proto");
1010
const X_FORWARDED_BY: HeaderName = HeaderName::from_lowercase_str("x-forwarded-by");
11+
const X_FORWARDED_HOST: HeaderName = HeaderName::from_lowercase_str("x-forwarded-host");
1112

1213
/// A rust representation of the [forwarded
1314
/// header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Forwarded).
@@ -169,12 +170,16 @@ impl<'a> Forwarded<'a> {
169170
.get(X_FORWARDED_PROTO)
170171
.map(|p| Cow::Borrowed(p.as_str()));
171172

172-
if !forwarded_for.is_empty() || by.is_some() || proto.is_some() {
173+
let host = headers
174+
.get(X_FORWARDED_HOST)
175+
.map(|h| Cow::Borrowed(h.as_str()));
176+
177+
if !forwarded_for.is_empty() || by.is_some() || proto.is_some() || host.is_some() {
173178
Ok(Some(Self {
174179
forwarded_for,
175180
by,
176181
proto,
177-
host: None,
182+
host,
178183
}))
179184
} else {
180185
Ok(None)
@@ -569,10 +574,11 @@ mod tests {
569574
let mut request = Request::new(Get, Url::parse("http://_/")?);
570575
request.append_header(X_FORWARDED_FOR, "192.0.2.43, 2001:db8:cafe::17");
571576
request.append_header(X_FORWARDED_PROTO, "gopher");
577+
request.append_header(X_FORWARDED_HOST, "example.com");
572578
let forwarded = Forwarded::from_headers(&request)?.unwrap();
573579
assert_eq!(
574580
forwarded.to_string(),
575-
r#"for=192.0.2.43, for="[2001:db8:cafe::17]";proto=gopher"#
581+
r#"for=192.0.2.43, for="[2001:db8:cafe::17]";host=example.com;proto=gopher"#
576582
);
577583
Ok(())
578584
}

0 commit comments

Comments
 (0)