Почему PHP "SERVER_PROTOCOL" показывает HTTP/1.1 даже при использовании https?

В адресной строке отображается " 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 1.1 в одном соединении HTTP 2.0.

В ваших целях проверьте, установлена ли переменная сервера HTTPS:

http://php.net/manual/en/reserved.variables.server.php

то есть что-то вроде

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') { ... }