为什么PHP的“SERVER_PROTOCOL”在使用https时也显示HTTP / 1.1?
地址栏显示“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') { ... }