From baaa84e90fc0cb2279804442f4c58971036f6911 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Tue, 4 Jul 2017 12:13:06 +0200 Subject: [PATCH] Include port info in HTTP headers for Netty client This commit adds the port information in the "Host" HTTP request header for the Netty-based HTTP client. Issue: SPR-15706 --- .../springframework/http/client/Netty4ClientHttpRequest.java | 2 +- .../http/client/AbstractMockWebServerTestCase.java | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/http/client/Netty4ClientHttpRequest.java b/spring-web/src/main/java/org/springframework/http/client/Netty4ClientHttpRequest.java index 8af1a2145b..3669d2bf4e 100644 --- a/spring-web/src/main/java/org/springframework/http/client/Netty4ClientHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/client/Netty4ClientHttpRequest.java @@ -142,7 +142,7 @@ class Netty4ClientHttpRequest extends AbstractAsyncClientHttpRequest implements FullHttpRequest nettyRequest = new DefaultFullHttpRequest( HttpVersion.HTTP_1_1, nettyMethod, path, this.body.buffer()); - nettyRequest.headers().set(HttpHeaders.HOST, this.uri.getHost()); + nettyRequest.headers().set(HttpHeaders.HOST, this.uri.getHost() + ":" + getPort(uri)); nettyRequest.headers().set(HttpHeaders.CONNECTION, "close"); for (Map.Entry> entry : headers.entrySet()) { nettyRequest.headers().add(entry.getKey(), entry.getValue()); diff --git a/spring-web/src/test/java/org/springframework/http/client/AbstractMockWebServerTestCase.java b/spring-web/src/test/java/org/springframework/http/client/AbstractMockWebServerTestCase.java index 423f66ed6c..0a496e871a 100644 --- a/spring-web/src/test/java/org/springframework/http/client/AbstractMockWebServerTestCase.java +++ b/spring-web/src/test/java/org/springframework/http/client/AbstractMockWebServerTestCase.java @@ -48,6 +48,8 @@ public class AbstractMockWebServerTestCase { public MockResponse dispatch(RecordedRequest request) throws InterruptedException { try { if (request.getPath().equals("/echo")) { + assertThat(request.getHeader("Host"), + Matchers.containsString("localhost:" + port)); MockResponse response = new MockResponse() .setHeaders(request.getHeaders()) .setHeader("Content-Length", request.getBody().size())