Так вроде очень похож на «Detecting https requests in php»:Обнаружение HTTPS против HTTP на сервер не посылает обратно ничего полезного
Хотите иметь https://example.com/pog.php пойти http://example.com/pog.php или даже наоборот.
Проблемы:
- Не можете что-нибудь от $ _SERVER чтения [ «HTTPS»], так как это не существует
- Сервер отправляет как запросы через порт 80, поэтому он не может проверить на 443 на HTTPS версия
apache_request_headers()
иapache_response_headers()
посылает обратно то же самое- не могу сказать loadbalancer что-нибудь или иметь его послать дополнительные Somethings данные обратной связи
- сервера выплюнул на странице в обоих URL-адресах точно так же, кроме идентификатора сеанса. Облом.
Есть ли на странице способы определить, вызвано ли это вызовом через SSL или без SSL?
Редактировать: $_SERVER["HTTPS"]
не существует, включено или нет, независимо от того, просматриваете ли вы сайт через SSL или без SSL. По какой-то причине хостинг решил обслуживать все HTTPS-запросы, зашифрованные, но вниз порт 80. И, таким образом, $_SERVER["HTTPS"]
никогда не будет включен, а не там, просто нет никакой полезной обратной связи на этой серверной точке. Таким образом, этот параметр всегда будет пустым.
(И да, это означает, что он помечается в говорят FF или Chrome для частично недействительным сертификата SSL. Но эта часть не имеет значения.)
Кроме того, самое большее, что может быть получен от обнаружения URL до точки косых черт. PHP не видит, имеет ли запрос https
или http
спереди.
Не доверяйте пользователю. Страница должна оставаться на HTTP-версии, поэтому, если они когда-либо попытаются перейти на HTTPS, они будут отброшены до версии HTTP. Понравился ваш ответ. – random