在一个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去操作
分享到:
相关推荐
https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置
2、本例中使用sslite库进行HTTPS通信的开发,其中使用了llhttp进行HTTP层的数据解析,在C盘下会将下载的网页的原始文件写入TestSSLHttp.html中,网页的Body文件写入TestSSLHttp_body.html中。 3、SSLWrap.h(.cpp)中...
gsoap wsdl SSL WSDL支持HTTPS SSL协议,已经编译好的wsdl,通过wsdl获取https的wsdl协议没有问题 如果遇到问题,可以用QQ问我,每天在线。 另外本人对gsoad熟悉,欢迎咨询
即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP...
java https ssl 实例 例子
Ssl 配置 httpsSsl 配置 httpsSsl 配置 https
用于配置SSL弱密码安全问题,屏蔽SSL低版本 ,例如:SSL2.0 SSL3.0 ,
申请SSL证书以及让网页使用HTTPS 申请SSL证书以及让网页使用HTTPS
nginx配置https ssl 安全协议nginx配置https ssl 安全协议
使用SSL_SOCKET 进行 网页POST 可以进行网页登陆 获取数据。
HTTPS(SSL)工作原理
tomcat ssl 连接器
java的get和post请求,获取json的工具类,https时会存在ssl校验的问题,工具会自动去除ssl校验。
Java中的SSL及HTTPS协议实例源码
iOS AFNetworks https ssl加密,介绍博客:http://www.cnblogs.com/jys509/p/5001566.html
详细介绍https连接的主要过程,ssl协议握手过程,解析传输数据
CXF实现SSL安全验证,实现https的WebService
NULL 博文链接:https://nancychengnan.iteye.com/blog/2116793
openjdk遇到的https的ssl异常解决方案,提供了两套解决方案
嵌入式浏览器shttpd为服务器端,IE浏览器,SSL传输,摘要认证