为什么即使使用https,PHP的“SERVER_PROTOCOL”也会显示HTTP / 1.1?

时间:2013-05-29 22:53:35

标签: php https

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

echo $_SERVER[ "SERVER_PROTOCOL" ];

为什么不显示https?

1 个答案:

答案 0 :(得分:19)

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