From fe20116b68ca8ce3f517b36fa7b0402ae54a541e Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Fri, 26 Dec 2014 13:42:37 -0800 Subject: [PATCH] Propagate https scheme when using Jetty Update Jetty 9 SSL support to register the SecureRequestCustomizer which ensures that calling getScheme() on the HttpServletRequest returns 'https'. Fixes gh-2232 --- .../jetty/JettyEmbeddedServletContainerFactory.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java index aa277c15ef2..77af33b60c2 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java @@ -29,7 +29,9 @@ import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.server.AbstractConnector; import org.eclipse.jetty.server.Connector; +import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.SecureRequestCustomizer; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.SessionManager; @@ -492,9 +494,15 @@ public class JettyEmbeddedServletContainerFactory extends @Override public ServerConnector getConnector(Server server, SslContextFactory sslContextFactory, int port) { + HttpConfiguration config = new HttpConfiguration(); + config.setSecureScheme("https"); + config.setSecurePort(port); + config.addCustomizer(new SecureRequestCustomizer()); + HttpConnectionFactory connectionFactory = new HttpConnectionFactory(config); + SslConnectionFactory sslConnectionFactory = new SslConnectionFactory( + sslContextFactory, HttpVersion.HTTP_1_1.asString()); ServerConnector serverConnector = new ServerConnector(server, - new SslConnectionFactory(sslContextFactory, - HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory()); + sslConnectionFactory, connectionFactory); serverConnector.setPort(port); return serverConnector; }