https检测 - 这两种方法的优缺点

时间:2011-08-22 15:58:39

标签: php html http https

我想对我在网页中链接的资源进行“智能”检测https / http。基本上如果页面需要有效的ssl,我只能放置https href。

选项1(使用PHP)

<?php
if ( $_SERVER["SERVER_PORT"] == "80" ) {
    $http = "http";
} else {
    $http = "https";
}
?>
<script type="text/javascript" src="<?=$http?>://myUri.com/script.js"></script>

选项2(使用 // 代替 http:// https://

<script type="text/javascript" src="//myUri.com/script.js"></script>

选项3 https 用于所有内容
有什么理由我不应该只为所有事情使用https吗?

2 个答案:

答案 0 :(得分:5)

协议相对//是处理此问题的最直观方式。但是,我不确定它是否受到旧版浏览器的普遍支持。

<script type="text/javascript" src="//myUri.com/script.js"></script>

在PHP中,您不应该检查$_SERVER["SERVER_PORT"] == "80",因为您可能在某些时候需要在80/443以外的端口上运行您的Web服务器,例如在开发中。而是检查HTTPS服务器变量的内容:

if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") {}

答案 1 :(得分:1)

选项1:这不健全。不可能有人通过端口80进行SSL,但这是可能的。

选项2:这是强大,简单和安全的。使用它。

选项3:如果您对所有脚本使用SSL,而不是页面,那么您将获得混合内容警报。通过SSL提供所有内容将对缓存和性能产生影响(但对于需要用户登录的站点的任何部分通常都是个好主意。)