diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-02 15:18:53 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-09-02 15:18:53 +0200 |
commit | 20c0c1ea8d08e2fea94635f8dbe564149c6e70f2 (patch) | |
tree | 5430f52248d6bac1c1e98e0281f1f0da315aa2c1 /container-core/src/main/java | |
parent | 2487f854a2d7c3a7dc5a0c008c56c98d81ef5008 (diff) |
Prefer 'Host' header when constructing uri builder
Diffstat (limited to 'container-core/src/main/java')
-rw-r--r-- | container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java index fda08342ead..68459cdb89d 100644 --- a/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java +++ b/container-core/src/main/java/com/yahoo/restapi/RestApiImpl.java @@ -400,10 +400,16 @@ class RestApiImpl implements RestApi { @Override public ObjectMapper jacksonJsonMapper() { return jacksonJsonMapper; } @Override public UriBuilder uriBuilder() { URI uri = request.getUri(); - int uriPort = uri.getPort(); - return uriPort != -1 - ? new UriBuilder(uri.getScheme() + "://" + uri.getHost() + ':' + uriPort) - : new UriBuilder(uri.getScheme() + "://" + uri.getHost()); + StringBuilder sb = new StringBuilder(uri.getScheme()).append("://"); + if (request.getHeader("Host") != null) { + sb.append(request.getHeader("Host")); + } else { + sb.append(uri.getHost()); + if (uri.getPort() > 0) { + sb.append(":").append(uri.getPort()); + } + } + return new UriBuilder(sb.toString()); } @Override public AclMapping.Action aclAction() { return aclAction; } @Override public Optional<Principal> userPrincipal() { |