gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:38:01 26 4
gpt4 key购买 nike

我已使用自签名证书将“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

最佳答案

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

您需要使用正确的地址。

您可以省略 URL 中的架构(例如 //myhost.com/foo/bar),因为这些协议(protocol)相关链接始终采用当前站点的协议(protocol)。

但是,在您的情况下,端口也会发生变化。所以我建议包含完整的 URL 并从某种变量中获取地址。

关于java - 在 Spring Boot 项目中,启用 'HTTPS' 时不支持 POST 调用,因为我收到错误 405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60000026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com