如果網站原本是http傳輸,在部署成https傳輸后,一不小心就會出現如下的安全提示:
“This page contains both secure and non secure items. Do you want to display non-secure items?”
或者
“此網站包含的內容將不使用安全的https連接傳送,可能危及到整個網頁的安全”
可能引起這個warning的原因,簡單歸納來說,不外乎是以下幾點:
1) hard-code了http(或其它非https)的URL訪問
這是一個比較常見的問題,一般來說都不要在WEB頁面中硬編碼URL,可以采用相對URL。 但是也分情況:
<%String path = request.getContextPath()+"/images/logo.gif";%>
<img src="http://www.xxx.com/images/logo.gif"/>
<img src="<%=path%>"/>
上面這兩個img中,第一個img會提示警告,而第二個img不會提示警告。
網頁中帶Object的,如最多使用的flash:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="549" height="130">
<param name="movie" value="<%=path%>/images/CNYSWF.swf" />
<param name="wmode" value="transparent" />
<embed src="<%=path%>/images/CNYSWF.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="549" height="130"></embed>
</object>
不過這樣的代碼可以有避免措施,那就是將flash所對應的這個CAB手動部署在自己的網站上,提供https連接。
2) WEB頁面中含有沒有設置SRC屬性的iframe元素
這個也比較常見,解決也很容易,可以給每個空的iframe設置SRC屬性,這個src可以指向一個空的html頁面,或是采用src="javascript:void()"這種方式。
注意,這個問題,在IE6下出現,IE8下不會出現。7和9沒測試。
3) 調用removeChild()方法去移除一個HTML元素,而這個元素包含一個backgroundImage背景圖片的style引用
這個嚴格來說,應該是IE的一個bug,可以在Microsoft官方網站上找到這個問題的描述和解決方案。不過即使是最新的IE8, 這個問題好像依然存在。
http://support.microsoft.com/kb/925014
4) 調用innerHTML()方法給一個HTML元素添加內容,之后再把這個元素添加到HTML DOM中
這個問題可能在一些Ajax應用中會碰到,通過Ajax動態更新HTML內容,如果內容包含image圖片等等內容,也會彈出這個warning。
當然,如果想通過修改IE的選項來顯示https和http混合內容,則在安全-〉自定義級的,“顯示混合內容”,選擇“啟用”。
以上內容引自網絡