最近在作的一個項目中出現了Https域向非Https域發送ajax請求沒法經過的問題java
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.ajax
而個人項目又正好是springboot項目,因此就去網上查看了一下如何解決這個問題。獲得的結果是被訪問的這個網址也必須是https的,因此須要咱們得到被訪問的https證書,因爲個人測試地址是本地服務,因此我採用的是本地keytools本身生成證書,若是你的項目是公網的,那麼你可能須要去證書頒發機構獲取證書。spring
那麼接下老就正式開始配置了。跨域
首先咱們要先獲取到本身生成的證書文件,能夠是.jks或者.keystore或者p12文件,那麼咱們將文件放到哪裏呢?咱們將文件放到項目的根目錄下就好了
接着就是配置了瀏覽器
SpringBoot中能夠在application.properties文件中進行配置,也能夠在代碼中進行配置,這裏咱們選擇在代碼中進行配置,節省一些沒必要要的配置tomcat
首先咱們在啓動類中實現EmbeddedServletContainerCustomizer接口,這個接口容許咱們對springboot中內置的tomcat進行自定義的配置,固然這個接口在SpringBoot2.0中有了變化,有興趣的朋友能夠關注一下。
實現了EmbeddedServletContainerCustomizer接口以後,須要去實現一個customize方法,在該方法中能夠進行一些配置
如下是個人配置springboot
@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包而後使用java -jar啓動以後,可能會提示缺乏server.keystore文件,那麼這個時候你須要將剛剛放到項目根目錄下的server.keystore文件放一份到與jar包同一目錄下。這樣就能夠正常啓動了app
本地https仍然沒法正常訪問的緣由,多是咱們本身的證書不受信任的緣由,那麼咱們須要在本身的本地瀏覽器中添加對本地127.0.0.1的httpsy域名證書的信任,具體如何添加請自行搜索。ide