thinkphp
thinkphp copied to clipboard
is_ssl() 判断 https 的兼容问题
有时候网站用了 cdn 前端是 https,但实际运行 php 的服务器是 http 的,这个时候 is_ssl 会认为 url 是 http 协议。
这种情况一般可以通过 X_FORWARDED_PROTO 做判断,建议修正代码如下:
function is_ssl() { if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){ return true; }elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) { return true; }elseif($_SERVER['HTTP_X_FORWARDED_PROTO']=='https'){ return true; } return false; }
额,代码片段忘记排版了,重新发一个。
function is_ssl() {
if(isset($_SERVER['HTTPS']) && ('1' == $_SERVER['HTTPS'] || 'on' == strtolower($_SERVER['HTTPS']))){
return true;
}elseif(isset($_SERVER['SERVER_PORT']) && ('443' == $_SERVER['SERVER_PORT'] )) {
return true;
}elseif($_SERVER['HTTP_X_FORWARDED_PROTO']=='https'){
return true;
}
return false;
}