Fix issue with parsing x-forwarded-host header

Issue: SPR-10701
This commit is contained in:
Rossen Stoyanchev
2013-07-30 11:40:54 -04:00
parent 676f7f9571
commit 1e90d02973
2 changed files with 29 additions and 4 deletions

View File

@@ -94,9 +94,20 @@ public class ServletUriComponentsBuilder extends UriComponentsBuilder {
public static ServletUriComponentsBuilder fromRequest(HttpServletRequest request) {
String scheme = request.getScheme();
int port = request.getServerPort();
String host = request.getServerName();
String header = request.getHeader("X-Forwarded-Host");
String host = StringUtils.hasText(header) ? header: request.getServerName();
String xForwardedHostHeader = request.getHeader("X-Forwarded-Host");
if (StringUtils.hasText(xForwardedHostHeader)) {
if (StringUtils.countOccurrencesOf(xForwardedHostHeader, ":") == 1) {
String[] hostAndPort = StringUtils.split(xForwardedHostHeader, ":");
host = hostAndPort[0];
port = Integer.parseInt(hostAndPort[1]);
}
else {
host = xForwardedHostHeader;
}
}
ServletUriComponentsBuilder builder = new ServletUriComponentsBuilder();
builder.scheme(scheme);