官方手册中的有用 $_SERVER['HTTPS']
变量去判断,但实际上目前很多服务器并没有设置此参数,因为需要结合其他手段。
$_SERVER['HTTP_X_FORWARDED_PROTO']
$_SERVER['HTTP_X_FORWARDED_PORT']
可以通过这两个变量来判断,ZF里 Uri::getScheme() 也是使用这两个变量进行判断的。
下面是示例代码:
if (php_sapi_name() == "cli") {
return '';
}
$schema = 'http://';
if ((!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off')
|| (!empty($_SERVER['HTTP_X_FORWARDED_PROTO'])
&& $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
) {
$scheme = 'https://';
}
return $scheme;
更多可以参考此StackOverflow的问题:
https://stackoverflow.com/questions/1175096/how-to-find-out-if-youre-using-https-without-serverhttps