Метод Spring Boot Request «GET» не поддерживается при перенаправлении запроса POST на порт https через Catalina Connector

Я пытаюсь перенаправить http на https через Catalina Connector в своем приложении Spring Boot. Если входящий запрос POST — «https», то он работает как положено. Но если мой входящий запрос POST имеет значение «http» и после перенаправления на «https» с помощью приведенного ниже кода, где-то он меняется на GET, из-за чего я получаю -

ПРЕДУПРЕЖДЕНИЕ 45028 --- [nio-8443-exec-8] o.s.web.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;
 }

person Sagar Sawant    schedule 16.09.2016    source источник
comment
Вы разобрались с этим? У меня такая же проблема.   -  person juventus    schedule 03.05.2017


Ответы (1)


Добавьте collection.addMethod(DEFAULT_PROTOCOL); эту строку в метод переопределения postProcessContext() из кода. Он работает правильно со всеми методами HTTP-запросов, такими как POST,PUT,DELETE,GET и т. д.

person Chetan Patel    schedule 26.07.2017
comment
Что такое DEFAULT_PROTOCOL? - person Dmytro Titov; 05.02.2018
comment
Добавьте collection.addMethod("org.apache.coyote.http11.Http11NioProtocol") в postProcessContext - person observer; 25.03.2020
comment
Можно ли это расширить, я не уверен, что следую - person JGleason; 12.10.2020