首页 >后端开发 >php教程 >如何在不依赖 $_SERVER['HTTPS'] 的情况下可靠地检测 HTTPS 使用情况?

如何在不依赖 $_SERVER['HTTPS'] 的情况下可靠地检测 HTTPS 使用情况?

Barbara Streisand
Barbara Streisand原创
2024-12-20 04:20:12861浏览

How Can I Reliably Detect HTTPS Usage Without Relying on $_SERVER['HTTPS']?

在没有 $_SERVER['HTTPS'] 的情况下确定 HTTPS 使用情况的替代方法

验证 HTTPS 连接的传统方法包括检查 $ 的值_SERVER['HTTPS']。但是,在某些服务器配置上,可能未定义此变量,从而导致错误。

解决方案

为了解决此问题,以下函数提供了可靠的替代方案确定 HTTPS 连接:

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

兼容性和说明

  • 代码适应 IIS 配置,其中 $_SERVER['HTTPS'] 对于非 HTTPS 请求设置为“off”。
  • 此外,它还会检查服务器如果 $_SERVER['HTTPS'] 未定义或未定义,则端口(对于 HTTPS 连接通常为 443)作为备份无效。

负载均衡器注意事项

此代码仅测试服务器和负载均衡器之间的连接(如果存在负载均衡器)。为了测试客户端和负载均衡器之间的连接,应使用 HTTP_X_FORWARDED_PROTO 标头,尽管这种方法更加复杂。

以上是如何在不依赖 $_SERVER['HTTPS'] 的情况下可靠地检测 HTTPS 使用情况?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn