6565import org .springframework .web .filter .FormContentFilter ;
6666import org .springframework .web .servlet .LocaleResolver ;
6767import org .springframework .web .servlet .i18n .CookieLocaleResolver ;
68- import org .springframework .web .servlet .i18n .SessionLocaleResolver ;
6968
7069import javax .annotation .PostConstruct ;
7170import javax .inject .Inject ;
8079import java .util .Arrays ;
8180import java .util .HashSet ;
8281import java .util .List ;
83- import java .util .Locale ;
8482import java .util .Properties ;
8583import java .util .Set ;
8684import java .util .concurrent .Executor ;
@@ -103,6 +101,8 @@ public class ContainerProxyApplication {
103101 private static final String SAME_SITE_COOKIE_DEFAULT_VALUE = "Lax" ;
104102 private static final String PROP_SERVER_SECURE_COOKIES = "server.secure-cookies" ;
105103 private static final Boolean SECURE_COOKIES_DEFAULT_VALUE = false ;
104+ private static final String PROP_FORCE_HTTPS_IN_REDIRECTS = "proxy.force-https-in-redirects" ;
105+ private static final Boolean FORCE_HTTPS_IN_REDIRECTS_DEFAULT_VALUE = false ;
106106 private static final Path TERMINATION_LOG_FILE = Path .of ("/dev/termination-log" );
107107 private static Boolean logAsJson = false ;
108108 public static Boolean secureCookiesEnabled ;
@@ -336,6 +336,15 @@ public UndertowServletWebServerFactory servletContainer() {
336336 info .setSessionManagerFactory (sessionManagerFactory );
337337 }
338338 info .setResourceManager (EMPTY_RESOURCE_MANAGER );
339+ if (environment .getProperty (PROP_FORCE_HTTPS_IN_REDIRECTS , Boolean .class , FORCE_HTTPS_IN_REDIRECTS_DEFAULT_VALUE )) {
340+ log .debug ("Enforcing redirects to always use https." );
341+ info .addInitialHandlerChainWrapper (handler ->
342+ exchange -> {
343+ exchange .setRequestScheme ("https" );
344+ handler .handleRequest (exchange );
345+ }
346+ );
347+ }
339348 });
340349 try {
341350 factory .setAddress (InetAddress .getByName (environment .getProperty ("proxy.bind-address" , "0.0.0.0" )));
0 commit comments