17

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

echo $_SERVER[ "SERVER_PROTOCOL" ];

为什么不显示https?

4

1 回答 1

29

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') { ... }
于 2013-05-29T22:57:50.600 回答