[英]Spring-boot redirect:/ to http instead of https
當重定向到 spring-boot 控制器中的相對路徑時,如下代碼。 當應用程序部署在 https 環境中時,它總是重定向到 http url。 所以我在瀏覽器中收到混合來源內容阻止錯誤。
return "redirect:/redirectUrl";
該應用程序部署在 weblogic 服務器中。
首先,打開 application.properties 文件並添加server.http.port
屬性來定義 HTTP 的端口,以及 HTTPS 的server.port
屬性。
注意: 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;
}
}
如果這對您不起作用,您可以考慮不同策略和實施的參考。
嘗試將以下內容添加到您的 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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.