Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


sitecreator

Recommended Posts

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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.