diff --git a/charon-common/src/main/java/com/github/mkopylec/charon/forwarding/interceptors/rewrite/CommonRequestProxyHeadersRewriter.java b/charon-common/src/main/java/com/github/mkopylec/charon/forwarding/interceptors/rewrite/CommonRequestProxyHeadersRewriter.java index e282705..6ddc9b2 100644 --- a/charon-common/src/main/java/com/github/mkopylec/charon/forwarding/interceptors/rewrite/CommonRequestProxyHeadersRewriter.java +++ b/charon-common/src/main/java/com/github/mkopylec/charon/forwarding/interceptors/rewrite/CommonRequestProxyHeadersRewriter.java @@ -38,7 +38,13 @@ void rewriteHeaders(HttpHeaders headers, URI uri, Consumer headersS forwardedFor.add(uri.getAuthority()); rewrittenHeaders.put(X_FORWARDED_FOR, forwardedFor); rewrittenHeaders.set(X_FORWARDED_PROTO, uri.getScheme()); - rewrittenHeaders.set(X_FORWARDED_HOST, uri.getHost()); + + if (uri.getPort() == -1) { + rewrittenHeaders.set(X_FORWARDED_HOST, uri.getHost()); + } else { + rewrittenHeaders.set(X_FORWARDED_HOST, uri.getHost() + ":" + uri.getPort()); + } + rewrittenHeaders.set(X_FORWARDED_PORT, resolvePort(uri)); headersSetter.accept(rewrittenHeaders); log.debug("Request headers rewritten from {} to {}", headers, rewrittenHeaders); diff --git a/charon-test/src/main/groovy/com/github/mkopylec/charon/test/specification/RequestProxyHeadersRewritingBasicSpec.groovy b/charon-test/src/main/groovy/com/github/mkopylec/charon/test/specification/RequestProxyHeadersRewritingBasicSpec.groovy index b7dfb40..85be6f4 100644 --- a/charon-test/src/main/groovy/com/github/mkopylec/charon/test/specification/RequestProxyHeadersRewritingBasicSpec.groovy +++ b/charon-test/src/main/groovy/com/github/mkopylec/charon/test/specification/RequestProxyHeadersRewritingBasicSpec.groovy @@ -28,7 +28,7 @@ abstract class RequestProxyHeadersRewritingBasicSpec extends BasicSpec { ['Host': 'example.com'] | ['X-Forwarded-For': 'example.com'] ['Host': 'example.com'] | ['X-Forwarded-Proto': 'http'] ['Host': 'example.com'] | ['X-Forwarded-Host': 'example.com'] - ['Host': 'example.com:666'] | ['X-Forwarded-Host': 'example.com'] + ['Host': 'example.com:666'] | ['X-Forwarded-Host': 'example.com:666'] ['Host': 'example.com'] | ['X-Forwarded-Port': '80'] ['Host': 'example.com:666'] | ['X-Forwarded-Port': '666'] }