Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
30c05b2b
Commit
30c05b2b
authored
Sep 22, 2019
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support X-Forwarded-Host header when auto-configuring RemoteIpValve
Closes gh-18233
parent
303974fd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
16 additions
and
0 deletions
+16
-0
ServerProperties.java
...ingframework/boot/autoconfigure/web/ServerProperties.java
+13
-0
TomcatWebServerFactoryCustomizer.java
...figure/web/embedded/TomcatWebServerFactoryCustomizer.java
+1
-0
TomcatWebServerFactoryCustomizerTests.java
...e/web/embedded/TomcatWebServerFactoryCustomizerTests.java
+2
-0
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java
View file @
30c05b2b
...
@@ -321,6 +321,11 @@ public class ServerProperties {
...
@@ -321,6 +321,11 @@ public class ServerProperties {
*/
*/
private
String
remoteIpHeader
;
private
String
remoteIpHeader
;
/**
* Name of the HTTP header from which the remote host is extracted.
*/
private
String
hostHeader
=
"X-Forwarded-Host"
;
/**
/**
* Tomcat base directory. If not specified, a temporary directory is used.
* Tomcat base directory. If not specified, a temporary directory is used.
*/
*/
...
@@ -519,6 +524,14 @@ public class ServerProperties {
...
@@ -519,6 +524,14 @@ public class ServerProperties {
this
.
remoteIpHeader
=
remoteIpHeader
;
this
.
remoteIpHeader
=
remoteIpHeader
;
}
}
public
String
getHostHeader
()
{
return
this
.
hostHeader
;
}
public
void
setHostHeader
(
String
hostHeader
)
{
this
.
hostHeader
=
hostHeader
;
}
public
Charset
getUriEncoding
()
{
public
Charset
getUriEncoding
()
{
return
this
.
uriEncoding
;
return
this
.
uriEncoding
;
}
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.java
View file @
30c05b2b
...
@@ -183,6 +183,7 @@ public class TomcatWebServerFactoryCustomizer
...
@@ -183,6 +183,7 @@ public class TomcatWebServerFactoryCustomizer
// The internal proxies default to a white list of "safe" internal IP
// The internal proxies default to a white list of "safe" internal IP
// addresses
// addresses
valve
.
setInternalProxies
(
tomcatProperties
.
getInternalProxies
());
valve
.
setInternalProxies
(
tomcatProperties
.
getInternalProxies
());
valve
.
setHostHeader
(
tomcatProperties
.
getHostHeader
());
valve
.
setPortHeader
(
tomcatProperties
.
getPortHeader
());
valve
.
setPortHeader
(
tomcatProperties
.
getPortHeader
());
valve
.
setProtocolHeaderHttpsValue
(
tomcatProperties
.
getProtocolHeaderHttpsValue
());
valve
.
setProtocolHeaderHttpsValue
(
tomcatProperties
.
getProtocolHeaderHttpsValue
());
// ... so it's safe to add this valve by default.
// ... so it's safe to add this valve by default.
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizerTests.java
View file @
30c05b2b
...
@@ -243,6 +243,8 @@ class TomcatWebServerFactoryCustomizerTests {
...
@@ -243,6 +243,8 @@ class TomcatWebServerFactoryCustomizerTests {
assertThat
(
remoteIpValve
.
getProtocolHeader
()).
isEqualTo
(
"X-Forwarded-Proto"
);
assertThat
(
remoteIpValve
.
getProtocolHeader
()).
isEqualTo
(
"X-Forwarded-Proto"
);
assertThat
(
remoteIpValve
.
getProtocolHeaderHttpsValue
()).
isEqualTo
(
"https"
);
assertThat
(
remoteIpValve
.
getProtocolHeaderHttpsValue
()).
isEqualTo
(
"https"
);
assertThat
(
remoteIpValve
.
getRemoteIpHeader
()).
isEqualTo
(
"X-Forwarded-For"
);
assertThat
(
remoteIpValve
.
getRemoteIpHeader
()).
isEqualTo
(
"X-Forwarded-For"
);
assertThat
(
remoteIpValve
.
getHostHeader
()).
isEqualTo
(
"X-Forwarded-Host"
);
assertThat
(
remoteIpValve
.
getPortHeader
()).
isEqualTo
(
"X-Forwarded-Port"
);
String
expectedInternalProxies
=
"10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|"
// 10/8
String
expectedInternalProxies
=
"10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|"
// 10/8
+
"192\\.168\\.\\d{1,3}\\.\\d{1,3}|"
// 192.168/16
+
"192\\.168\\.\\d{1,3}\\.\\d{1,3}|"
// 192.168/16
+
"169\\.254\\.\\d{1,3}\\.\\d{1,3}|"
// 169.254/16
+
"169\\.254\\.\\d{1,3}\\.\\d{1,3}|"
// 169.254/16
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment