SpringBoot 1.X版本設置Https訪問以及跨域https訪問的問題


最近在做的一個項目中出現了Https域向非Https域發送ajax請求無法通過的問題

Mixed Content: The page at was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://127.0.0.1/test'. This request has been blocked; the content must be served over HTTPS.

而我的項目又正好是springboot項目,所以就去網上查看了一下如何解決這個問題。得到的結果是被訪問的這個網址也必須是https的,所以需要我們獲得被訪問的https證書,由於我的測試地址是本地服務,所以我采用的是本地keytools自己生成證書,如果你的項目是公網的,那么你可能需要去證書頒發機構獲取證書。

那么接下老就正式開始配置了。

HTTPS在項目中的使用

首先我們要先獲取到自己生成的證書文件,可以是.jks或者.keystore或者p12文件,那么我們將文件放到哪里呢?我們將文件放到項目的根目錄下就行了
接着就是配置了

HTTPS的配置

SpringBoot中可以在application.properties文件中進行配置,也可以在代碼中進行配置,這里我們選擇在代碼中進行配置,節省一些不必要的配置

首先我們在啟動類中實現EmbeddedServletContainerCustomizer接口,這個接口允許我們對springboot中內置的tomcat進行自定義的配置,當然這個接口在SpringBoot2.0中有了變化,有興趣的朋友可以關注一下。
實現了EmbeddedServletContainerCustomizer接口之后,需要去實現一個customize方法,在該方法中可以進行一些配置
以下是我的配置

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        Ssl ssl = new Ssl();
        //Server.keystore中包含服務器私鑰和證書
        ssl.setKeyStore("server.keystore");
        ssl.setKeyStorePassword("zhuofansoft");
        container.setPort(8432);
        container.setSsl(ssl);
        container.setContextPath("/keybord");
    }

自此關於Https的配置就告一段落了。

如果你要打包成jar包的話

當你打包成jar包然后使用java -jar啟動之后,可能會提示缺少server.keystore文件,那么這個時候你需要將剛剛放到項目根目錄下的server.keystore文件放一份到與jar包同一目錄下。這樣就可以正常啟動了

如果本地https仍然無法跨域訪問請看這里

本地https仍然無法正常訪問的原因,可能是我們自己的證書不受信任的原因,那么我們需要在自己的本地瀏覽器中添加對本地127.0.0.1的httpsy域名證書的信任,具體如何添加請自行搜索。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM