PHP 检测是否 HTTPS 环境

官方手册中的有用 $_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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。