В Spring Boot Project вызовы POST не поддерживаются, когда включен HTTPS, так как я получаю сообщение об ошибке 405 - PullRequest
0 голосов
/ 31 января 2020

Я перенаправил 'http' (порт 8080) traffi c в 'https' (порт 8443), используя самозаверяющий сертификат и все работает нормально. но после звонков отображается ошибка 405. (метод не разрешен).

Это мой код, который использовался для перенаправления

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

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

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

      return connector;
    }

Это конфигурация, которую я использовал,

    server.port=8443
    server.ssl.key-alias=selfsigned_localhost_sslserver
    server.ssl.key-password=changeit
    server.ssl.key-store=classpath:ssl-server.jks
    server.ssl.key-store-provider=SUN
    server.ssl.key-store-type=JKS

1 Ответ

0 голосов
/ 31 января 2020

HTTP перенаправляет работу, отправляя заголовок Location с новым адресом. Браузер будет следовать за этим перенаправлением, используя GET. Вы не можете перенаправить запрос POST, потому что тело POST (например, данные) будет потеряно.

Вам необходимо использовать правильный адрес.

Вы можете опустить схему в своих URL-адресах (например, //myhost.com/foo/bar), так как эти относительные к протоколу ссылки всегда выбирают протокол текущего сайта.

Однако в вашем случае также порт меняется. Поэтому я бы предложил включить полный URL-адрес и взять адрес из какой-то переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...