2016-09-16 66 views
2

我試圖通過我的Spring Boot應用程序中的Catalina連接器將http重定向到https。如果傳入的POST請求是「https」,則它按預期工作。但是,如果我的傳入POST請求是「http」,並通過下面的代碼重定向到「https」後,某處它正在變爲GET,因此我得到 -Spring Boot通過Catalina連接器將POST請求重定向到https端口時,請求方法GET不支持

WARN 45028 --- [nio -8443-EXEC-8] osweb.servlet.PageNotFound:請求方法 'GET' 不支持

下面是我@SpringBootApplication類中的方法:

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() { 
     @Override 
     protected void postProcessContext(org.apache.catalina.Context context) { 
      SecurityConstraint securityConstraint = new SecurityConstraint(); 
      securityConstraint.setUserConstraint("CONFIDENTIAL"); 
      SecurityCollection collection = new SecurityCollection(); 
      collection.addPattern("/*"); 
      securityConstraint.addCollection(collection); 
      context.addConstraint(securityConstraint); 
     } 
    }; 

    tomcat.addAdditionalTomcatConnectors(initiateHttpConnector()); 
    return tomcat; 
} 

private Connector initiateHttpConnector() { 
    Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); 
    connector.setScheme("http"); 
    connector.setPort(10024); 
    connector.setSecure(false); 
    connector.setRedirectPort(8443); 

    return connector; 
} 
+0

你有沒有想到這一個?我有同樣的問題。 – juventus

回答

0

添加collection.addMethod(DEFAULT_PROTOCOL);此行postProcessContext()從代碼覆蓋方法。 它可以正常使用所有的HTTP請求方法,如POST,PUT,DELETE,GET等。

+0

什麼是'DEFAULT_PROTOCOL'? –

相關問題