地址栏显示“ https://mywebsite.com ”,并显示一个锁定图标(单击它显示它是 AES-256),但是当我运行以下代码时,它总是打印“HTTP/1.1”。
echo $_SERVER[ "SERVER_PROTOCOL" ];
为什么不显示https?
地址栏显示“ https://mywebsite.com ”,并显示一个锁定图标(单击它显示它是 AES-256),但是当我运行以下代码时,它总是打印“HTTP/1.1”。
echo $_SERVER[ "SERVER_PROTOCOL" ];
为什么不显示https?
SERVER_PROTOCOL 与页面的安全性无关,它会报告所使用的连接是 HTTP 1.0 还是 HTTP 1.1 还是 HTTP 2.0:
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
HTTP/1.1 是原始 HTTP (HTTP/1.0) 的修订版。在 HTTP/1.0 中,每个资源请求都会建立到同一服务器的单独连接。HTTP/1.1 可以在页面交付后多次重用连接来下载图像、脚本、样式表等。因此,HTTP/1.1 通信的延迟更少,因为 TCP 连接的建立会带来相当大的开销。
而 HTTP 2.0 是下一代 HTTP,它允许在一个 HTTP 2.0 连接中多路复用多个 HTTP 1.1 连接。
出于您的目的,请检查是否设置了 HTTPS 服务器变量:
http://php.net/manual/en/reserved.variables.server.php
即类似的东西
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { ... }