为什么PHP的“SERVER_PROTOCOL”在使用https时也显示HTTP / 1.1?

2022-08-30 23:17:22

地址栏显示“https://mywebsite.com”,并显示一个锁定图标(单击该图标显示它是AES-256),但是当我运行以下代码时,它始终打印“HTTP / 1.1”。

echo $_SERVER[ "SERVER_PROTOCOL" ];

为什么这不显示https?


答案 1

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') { ... }

答案 2

推荐