<?php
// 获取当前URL的协议
function getProtocol() {
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') {
return 'https://'; // 如果不是off,则是HTTPS
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
return 'https://'; // 如果是HTTPS,但是通过代理,可能会通过这个头部检测
} elseif (isset($_SERVER['HTTP_FRONT_END_HTTPS']) && $_SERVER['HTTP_FRONT_END_HTTPS'] == 'on') {
return 'https://'; // 一些特定的代理服务器会使用这个头部
} else {
return 'http://'; // 默认是HTTP
}
}
$protocol = getProtocol();
echo $protocol;
如果做了一些反向代理的https,例如用nginx做了一层反向代理,证书挂在nginx上,apache还是走的http,所以返回的还是http