當重定向到 spring-boot 控制器中的相對路徑時,如下代碼。當應用程式部署在 https 環境中時,它總是重定向到 http url。所以我在瀏覽器中收到混合來源內容阻止錯誤。
return "redirect:/redirectUrl";
該應用程式部署在 weblogic 服務器中。
uj5u.com熱心網友回復:
首先,打開 application.properties 檔案并添加server.http.port屬性以定義 HTTP 的埠和server.portHTTPS 的屬性。
注意: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;
}
}
如果這對您不起作用,您可以考慮不同策略和實施的參考。
參考-1
參考-2
uj5u.com熱心網友回復:
嘗試將以下內容添加到您的 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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/341217.html
