@@ -90,6 +90,20 @@ void noHeaders() {
9090 });
9191 }
9292
93+ @ Test
94+ void noHeadersEmptyHostHeader () {
95+ testClientRequest (
96+ clientRequestHeaders -> clientRequestHeaders .set (HttpHeaderNames .HOST , "" ),
97+ serverRequest -> {
98+ Assertions .assertThat (serverRequest .hostAddress ().getHostString ())
99+ .containsPattern ("^0:0:0:0:0:0:0:1(%\\ w*)?|127.0.0.1$" );
100+ Assertions .assertThat (serverRequest .hostAddress ().getPort ()).isEqualTo (this .disposableServer .port ());
101+ Assertions .assertThat (serverRequest .hostName ()).isEmpty ();
102+ int port = serverRequest .scheme ().equals ("https" ) ? DEFAULT_HTTPS_PORT : DEFAULT_HTTP_PORT ;
103+ Assertions .assertThat (serverRequest .hostPort ()).isEqualTo (port );
104+ });
105+ }
106+
93107 @ Test
94108 void hostHeaderNoForwardedHeaders () {
95109 testClientRequest (
@@ -130,6 +144,20 @@ void forwardedHost() {
130144 });
131145 }
132146
147+ @ Test
148+ void forwardedHostEmptyHostHeader () {
149+ testClientRequest (
150+ clientRequestHeaders -> clientRequestHeaders .add ("Forwarded" , "host=192.168.0.1" )
151+ .set (HttpHeaderNames .HOST , "" ),
152+ serverRequest -> {
153+ Assertions .assertThat (serverRequest .hostAddress ().getHostString ()).isEqualTo ("192.168.0.1" );
154+ int port = serverRequest .scheme ().equals ("https" ) ? DEFAULT_HTTPS_PORT : DEFAULT_HTTP_PORT ;
155+ Assertions .assertThat (serverRequest .hostAddress ().getPort ()).isEqualTo (port );
156+ Assertions .assertThat (serverRequest .hostName ()).isEqualTo ("192.168.0.1" );
157+ Assertions .assertThat (serverRequest .hostPort ()).isEqualTo (port );
158+ });
159+ }
160+
133161 @ Test
134162 void forwardedHostIpV6 () {
135163 testClientRequest (
@@ -168,6 +196,20 @@ void xForwardedHost() {
168196 });
169197 }
170198
199+ @ Test
200+ void xForwardedHostEmptyHostHeader () {
201+ testClientRequest (
202+ clientRequestHeaders -> clientRequestHeaders .add ("X-Forwarded-Host" ,
203+ "[1abc:2abc:3abc::5ABC:6abc], 192.168.0.1" ).set (HttpHeaderNames .HOST , "" ),
204+ serverRequest -> {
205+ Assertions .assertThat (serverRequest .hostAddress ().getHostString ()).isEqualTo ("1abc:2abc:3abc:0:0:0:5abc:6abc" );
206+ int port = serverRequest .scheme ().equals ("https" ) ? DEFAULT_HTTPS_PORT : DEFAULT_HTTP_PORT ;
207+ Assertions .assertThat (serverRequest .hostAddress ().getPort ()).isEqualTo (port );
208+ Assertions .assertThat (serverRequest .hostName ()).isEqualTo ("1abc:2abc:3abc:0:0:0:5abc:6abc" );
209+ Assertions .assertThat (serverRequest .hostPort ()).isEqualTo (port );
210+ });
211+ }
212+
171213 @ Test
172214 void xForwardedHostPortIncluded () {
173215 testClientRequest (
0 commit comments