Перейти к содержанию
sitecreator

$_SERVER['HTTPS'] - а можно ли всегда доверять?

Рекомендуемые сообщения

if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1')))

 

Встретил такой вод код.  Как я понимаю, авторы предполагали, что он будет работать всегда и везде.

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

Это проверялось элементарным кодом - всего одна строчка в файле  (получали undefined):

 

echo $_SERVER['HTTPS'];

 

Вопрос знающим:  в каких конкретных случаях такое возможно?

Операционка: Centos 7, php (CGI) 5.6

 

про конфигурацию веб-сервера пока умолчу, в надежде, что разбирающиеся в серверах и сами знают когда такое возможно.

 

Документацию, конечно же, я читать умею:

 

Цитата

Переменная $_SERVER - это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером. Нет гарантии, что каждый веб-сервер предоставит любую из них; сервер может опустить некоторые из них или предоставить другие, не указанные здесь.

 

 

Разработчики, которые используют данный код, знают об исключительных ситуациях?  Возможно, что дают рекомендации как избежать таких исключительных ситуаций?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Увы...

Такое случается при неверных настройках ngnix например

 

в таких случаях может помочь, например

 

RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule .* - [E=HTTPS:on]

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В случаях, когда HTTPS неверно настроен для данного сервера, можно попробовать проверить, является ли $ _SERVER ['SERVER_PORT'] == 443.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да есть такое дело не определен $_SERVER['HTTPS']

А бывает еще $_SERVER['HTTPS'] = 'On'  - т е с большой буквы

И тоже получается "засада"

if (isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1')))

 

Попробуйте в htaccess

SetEnv HTTPS on

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.