`
bevis.cn
  • 浏览: 149609 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Https SSL网页中,IE浏览器去警告

阅读更多
在一个tomcat j2ee项目中,在引入https后访问原来的网页时老出现
"This page contains both secure and non secure items.
Do you want to display non-secure items?"
或者
"此网站包含的内容将不使用安全的https连接传送,可能危及到整个网页的安全"
在出现这样的提示,实在是太影响用户交互。

后来网上查找一下,大多数网友给的解决方案是:
在ie的“Internet 选项”中修改ie的设定。但是如果是一个对外的网站,你也不可能要求每个用户都去改ie的设定,而且就算他们同意改,很多上网的用户根本不知道去哪里改。

所以通过修改ie设定的方式行不通,要找到问题的原因才能找到相应的解决办法。

后来网上有找到:
引用

我们首先需要了解可能引起这个warning的原因,简单归纳来说,不外乎是以下几点:
    1) hard-code了http(或其它非https)的URL访问。
        这是一个比较常见的问题,一般来说都不要在WEB页面中硬编码URL,可以采用相对URL。
    2) WEB页面中含有没有设置SRC属性的iframe元素。
        这个也比较常见,解决也很容易,可以给每个空的iframe设置SRC属性,这个src可以指向一个空的html页面,或是采用src="javascript:void()"这种方式。
    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。


后来我也在自己的电脑做过一些测试。
测试的结果是
1. https的网页中包含有非"https"的连接是不会出现警告,比如出现
<a href="http://www.google.com">google</a>
这样的连接是没有问题,不会出现警告信息。

但是假如如下的代码:
<%String path = request.getContextPath()+"/pages/wellcome/";%>
<img src="http://www.iteye.com/images/logo.gif?1252896923"/>
<img src="<%=path%>/images/w_r5_c1.jpg"/>
上面这两个img中,第一个img会提示警告,而第二个img不会提示警告。

2.<iframe>标签中没有设定src属性,这样是会出现警告,所以加上
src="javascript:void(0)"是可以 解决问题。
3.至于remoceChild()和innerHTML这两种情况没有测试过。
4.还有一种情况
网页中有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会提示错误,可能的原因,可能就是因为那两个显示的http的连接


终合上述的分析,如果要避免出现警告信息,而且要兼顾安全性和体验性。
我的建议是:
1.需要用到内容加密的页面才用ssl加密,不需要用到https的页面不用https
2.把需要用到https的页面独立出来,比如登陆页面,重要的信息页面,在这个页面的功能尽量简单,减少出错的机会。
3.少用js去操作


3
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics