我想有"智能"检测https/http的资源,我在我的网页内链接。基本上,如果页面需要一个有效的ssl,我只能把https
href .
选项1
<?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吗?
与协议相关的//
是处理此问题最直观的方法。但是,我不确定旧的浏览器是否普遍支持它。
<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:这不是健壮的。有人不太可能在80端口上使用SSL,但这是可能的。
选项2:这是健壮、简单和安全的。使用它。
选项3:如果你对所有脚本使用SSL,但不是页面,那么你会得到混合内容警报。通过SSL提供所有内容将对缓存和性能产生影响(但对于需要用户登录的站点的任何部分来说,这通常是一个好主意)。