在Spring Boot Project中,启用'HTTPS'时不支持POST调用,因为我收到错误405

问题描述 投票:0回答:1

我已使用自签名证书及其正常工作将“ http”(端口8080)流量重定向到“ 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
java spring-boot post https
1个回答
0
投票

HTTP通过发送带有新地址的Location标头来重定向工作。浏览器将使用GET遵循此重定向。您无法重定向POST请求,因为POST正文(例如数据)将丢失。

您需要使用正确的地址。

您可以在URL(例如,//myhost.com/foo/bar)中省略模式,因为那些相对协议的链接始终会选择当前站点的协议。

但是,根据您的情况,端口也会更改。因此,我建议包括完整的URL并从某种变量中获取地址。

© www.soinside.com 2019 - 2024. All rights reserved.