地址栏显示“https://mywebsite.com”,它显示一个锁定图标(并单击显示它的AES-256),但是当我运行以下代码时,它总是打印“HTTP / 1.1”。
echo $_SERVER[ "SERVER_PROTOCOL" ];
为什么不显示https?
答案 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') { ... }