gpt4 book ai didi

java - Spring Boot 将 HTTP 重定向到 HTTPS

转载 作者:IT老高 更新时间:2023-10-28 21:02:04 27 4
gpt4 key购买 nike

对于基于 Spring Boot 的应用程序,我在 application.properties 中配置了 ssl 属性,请在此处查看我的配置:

server.port=8443
server.ssl.key-alias=tomcat
server.ssl.key-password=123456
server.ssl.key-store=classpath:key.p12
server.ssl.key-store-provider=SunJSSE
server.ssl.key-store-type=pkcs12

我在 Application.class 中添加了连接,比如

@Bean
public EmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
final TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.addAdditionalTomcatConnectors(this.createConnection());
return factory;
}

private Connector createConnection() {
final String protocol = "org.apache.coyote.http11.Http11NioProtocol";
final Connector connector = new Connector(protocol);

connector.setScheme("http");
connector.setPort(9090);
connector.setRedirectPort(8443);
return connector;
}

但是当我尝试以下操作时

http://127.0.0.1:9090/

重定向到

https://127.0.0.1:8443/

不执行。谁遇到过类似的问题?

最佳答案

要让 Tomcat 执行重定向,您需要为它配置一个或多个安全约束。您可以通过对 Context 进行后处理来做到这一点。使用 TomcatEmbeddedServletContainerFactory子类。

例如:

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);
}
};

由于 CONFIDENTIAL/* ,这将导致 Tomcat 将每个请求重定向到 HTTPS。如果您需要对重定向和不重定向的内容进行更多控制,您可以配置多个模式和多个约束。

上述 TomcatEmbeddedServletContainerFactory 的一个实例子类应使用 @Bean 定义为 bean @Configuration 中的方法类。

关于java - Spring Boot 将 HTTP 重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26655875/

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