Как узнать, используете ли Вы HTTPS без $ _SERVER ['HTTPS']

Лучший способ работать с версиями узлов - использовать NVM или менеджер версий узлов после установки, используя следующие команды:

nvm list (shows you the list of installed nodejs version)
nvm install nodeversion   (to install the node version, if latest use  @latest) 
nvm use 10.515..   (to use a perticular node version)
185
задан Quill 13 April 2015 в 18:46
поделиться

4 ответа

Это всегда должно работать, даже если $ _ SERVER ['HTTPS'] не определен:

function isSecure() {
  return
    (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
    || $_SERVER['SERVER_PORT'] == 443;
}

Код совместим с IIS.

Из документации PHP.net и комментариев пользователей :

1) Установите непустое значение, если сценарий был запрошен через протокол HTTPS.

2) Обратите внимание, что при использовании ISAPI с IIS значение будет «выключено», если запрос не был сделан через протокол HTTPS. (Такое же поведение было зарегистрировано для IIS7, использующего PHP как приложение Fast-CGI).

Кроме того, на серверах Apache 1.x (и неработающих установках) может не быть определено $ _ SERVER ['HTTPS'] , даже при безопасном подключении. Хотя это и не гарантируется, соединения через порт 443, согласно соглашению , вероятно, используют безопасные сокеты , поэтому требуется дополнительная проверка порта.

Дополнительное примечание: если между клиентом и вашим сервером есть балансировщик нагрузки, этот код проверяет не соединение между клиентом и балансировщиком нагрузки, а соединение между балансировщиком нагрузки и вашим сервером. Чтобы проверить первое соединение, вам нужно будет проверить с помощью заголовка HTTP_X_FORWARDED_PROTO , но это сделать гораздо сложнее; см. последние комментарии под этим ответом.

269
ответ дан 23 November 2019 в 05:52
поделиться

Согласно сообщению hobodave: «Установите непустое значение, если сценарий был запрошен через протокол HTTPS.»

if (!empty($_SERVER['HTTPS']))
{
    $secure_connection = true;
}
-7
ответ дан 23 November 2019 в 05:52
поделиться

Вы можете проверить $ _ SERVER ['SERVER_PORT'] , поскольку SSL обычно работает на порту 443, но это не надежно.

2
ответ дан 23 November 2019 в 05:52
поделиться

Чача, согласно документации PHP: «Установите непустое значение, если скрипт был запрошен через протокол HTTPS». Таким образом, ваш оператор if будет возвращать false во многих случаях, когда HTTPS действительно включен. Убедитесь, что $ _ SERVER ['HTTPS'] существует и не является пустым. В случаях, когда HTTPS установлен неправильно для данного сервера, вы можете попробовать проверить, если $ _ SERVER ['SERVER_PORT'] == 443 .

Но обратите внимание, что некоторые серверы также устанавливают $ _SERVER ['HTTPS'] на непустое значение, поэтому обязательно проверьте и эту переменную.

Ссылка: Документация для $ _ SERVER и $ HTTP_SERVER_VARS [устарело]

81
ответ дан 23 November 2019 в 05:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: