【发布时间】:2021-12-12 18:52:54
【问题描述】:
当重定向到 spring-boot 控制器中的相对路径时,如下面的代码。当应用程序部署在 https 环境中时,它总是重定向到 http url。所以我在浏览器中收到混合来源内容阻止错误。
return "redirect:/redirectUrl";
应用部署在weblogic server中。
【问题讨论】:
标签: java spring spring-boot http weblogic
当重定向到 spring-boot 控制器中的相对路径时,如下面的代码。当应用程序部署在 https 环境中时,它总是重定向到 http url。所以我在浏览器中收到混合来源内容阻止错误。
return "redirect:/redirectUrl";
应用部署在weblogic server中。
【问题讨论】:
标签: java spring spring-boot http weblogic
尝试将以下内容添加到您的 WEB-INF/web.xml 文件中...
<web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureResources</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
这应该会导致任何 http 请求被重定向到 https。
【讨论】:
首先,打开 application.properties 文件并添加 server.http.port 属性以定义 HTTP 端口,并添加 server.port 属性以定义 HTTPS。
注意:server.http.port 是您定义的属性,在 SpringBoot 中不可用。
在 application.properties 文件中:
# (User-defined Property)
# Port for HTTP and read by Spring Boot via @Value("${server.http.port:80}")
server.http.port=8080
# Port for HTTPS and read by Spring Boot via @Value("${server.port:443}")
server:
ssl:
key-store: classpath:keystore.p12
key-store-password: password
key-store-type: pkcs12
key-alias: springboot
key-password: password
port: 8443
server.port:服务器正在监听的端口。我们使用的是 8443 而不是默认的 8080 端口。server.ssl.key-store:包含 SSL 证书的密钥库的路径。在我们的示例中,我们希望 Spring Boot 在类路径中查找它。server.ssl.key-store-password:用于访问密钥库的密码。server.ssl.key-store-type:密钥库的类型(JKS 或 PKCS12)。server.ssl.key-alias:标识密钥库中密钥的别名。server.ssl.key-password:用于访问密钥库中密钥的密码。接下来,创建一个HttpHttpsConfig 类并配置 Spring Boot 以同时使用 HTTP 和 HTTPS 协议。
@Configuration
public class HttpHttpsConfig {
// (User-defined Property)
@Value("${server.http.port:80}")
private int httpPort;
@Bean
public ServletWebServerFactory servletContainer() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setPort(this.httpPort);
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
}
如果这对您不起作用,您可以考虑不同策略和实施的参考。
【讨论】: