簡體   English   中英

Spring-boot 重定向:/ 到 http 而不是 https

[英]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;
    }
}

如果這對您不起作用,您可以考慮不同策略和實施的參考。

參考-1

參考-2

嘗試將以下內容添加到您的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM