Mixed Content:the page at‘http://XXXX‘ was loaded over HTTPS

問題:

我這邊是https的應用,需要請求另一臺http應用的字體資源(woff或者ttf),然後報錯:Mixed Content:the page at'http://XXXX' was loaded over HTTPS

原因:

HTTPS頁面裏動態的引入HTTP資源,會被直接block掉的.在HTTPS頁面裏通過AJAX的方式請求HTTP資源,也會被直接block掉。

看到網上給的方式:

第一種:自動將http的不安全請求升級爲https

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

還有跟這個方案如出一轍的解決方案:(一個什麼鬼草案的(Upgrade Insecure Requests 的草案 ))

此時問題來了,我請求的ttf字體,確實可以升級成https的,但是由於證書爲題會出現如下錯誤:

net::ERR_CERT_AUTHORITY_INVALID 

這個需要手動去點擊一下,才能正常下載,但是字體效果總不能讓用戶去點擊下載字體,再強刷瀏覽器顯示效果吧。 

網上給的第二種方案: 

用nginx代理,這個確實能夠解決,但是在項目本身沒有使用nginx的情況下,專門爲這個問題搞一個nginx有點“殺雞焉用宰牛刀”的感覺了。

我的解決方案:

filter+proxy,過濾器攔截到需要請求的資源,應用中是要請求字體的,例:https://localhost:8084/WMS/ttf/yahei.ttf,但是這個字體是要去另一臺http服務器請求的,本身肯定是不存在的,不出意外應該是會報404的。

我們就在過濾器中強行修改response的內容,本來是要返回404的,我們在返回之前代理請求http的字體,然後修改response,把404替換成查出來的ttf,返回給瀏覽器,就能完美解決。

上點代碼:

我是小菜鳥,只針對個人需求,描述有錯誤或者解決不了你們的問題,還請勿噴! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章