网站开发日志

2009年11月9日星期一

分享家:Addthis中国

网页同时含有安全性与非安全性的项目

当网页内包含HTTP及HTTPS的内容时,在IE下会出现弹出 "…网页同时含有安全性与非安全性的项目…"的警告讯息;在Firefox下,你将看到有下角的安全锁图标裂开了。这通常不是什么大问题。

如何你在浏览别人的网站,

  1. 在IE下你可以通过:
    工具->选项->安全性->自订等级将『显示混合的内容』由"提示"修改为"启用"即可。
  2. 在Forefox下,你可以忽略那个裂开的安全锁。

如果你拥有这个网站,那么你应该考虑避免在安全页面包含非安全的元素,也就是在https页面里,把http://打头的href用https://或者相对路径代替。当然,前提是该元素可以通过https接入。

https是需要购买安全证书的,不是什么网站随随便便在前面加上https就可以访问,例如:https://www.61dh.com是不可以访问的,因为我没有买安全证书。另外SSL安全证书是和域名对应的,比如说我买了https://secure.61dh.com,它只对sercure.61dh.com生效,而https://www.61dh.com依然无法访问。

如果一个安全页面上含有非安全元素(通常是链接或者图片),并且这些链接不支持安全连接。那么应该怎么办呢?

这里要介绍两个可行解决方案。(注意:下面用到https://secure.61dh.com只是用来举例说明的,它并不存在。)

方法一:在服务器配置文件里加入安全到非安全的跳转

在Apache服务器下,当访问https://安全页面时通常要先到达ssl.conf,而访问不安全页面通常先到达http.conf。所以我们可以在ssl.conf里对某些url进行跳转。这种方法是用于同域名跳转,例如:

RewriteCond   %{REQUEST_URI}  !^/cart/checkout/.*$
RewriteRule   ^/(.*)$         http://%{HTTP_HOST}/$1  [R,L]

上述Rewrite Rule,可以实现 https://secure.61dh.com/cart/http://www.61dh.com/cart 的跳转。

方法二:使用PHP跳转代码

当安全页面含有外部链接时,这个方法很适用。例如在https://secure.61dh.com页面里含有http://www.mysite.com的友情链接,我们可以把这个链接用安全链接来表示:

<a href="https://secure.61dh.com/redirect.php?to=http%3a%2f%2fwww.mysite.com">
彩票站</a>

注意:这里我用到redirect.php,这个文件支持安全链接,而非安全链接http://www.mysite.com被当成变量。redirect.php代码很简单,如下:

<?php
$to    = isset($_GET['to'])      ?  $_GET['to']       : '';
if ($to){
   header("Location: $to") ;
   exit;
}
?>

标签: ,

相关文章:

0 条评论:

发表评论

指向此帖子的链接:

创建链接