PHP В чем разница при использовании http перед переменными $SERVER?

#php

#php

Вопрос:

Я гуглил и гуглил, и я в тупике.

Я пытаюсь захватить URL страницы после входа в прокси

url страницы перед входом в прокси:

 https://example.org/mypage.php
  

url страницы после входа в прокси:

 https ://example-org.proxy.example.org/mypage.php
  

Когда я пытаюсь захватить URL-адрес с помощью

 $lnk = "https ://$_SERVER['HTTP_HOST']$_SERVER['REQUEST_URI']";
  

вывод по желанию:

 https ://example-org.proxy.example.org/mypage.php
  

Когда я отключаю https: // и просто записываю переменные $SERVER, на выходе отсутствует прокси-часть URL.

 $lnk = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  

вывод:

 example.org/mypage.php
  

Последнее имеет смысл, как если бы я сбрасывал массив $SERVER, я вижу, что прокси-часть URL отсутствует. Как он находит информацию о прокси в первом примере?

Обновление:
я использовал окно incogneto в Chrome и попробовал его в IE, такое же поведение. Я попробовал следующее
$lnk = $ _SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’];
$ lnk2 = «https: //».$ lnk;

повторение обеих переменных дает те же результаты, что и выше. Если я изменю http:// на ‘bla’ или ‘bla: //’, $ lnk и $ lnk2 оба показывают ожидаемый не проксируемый URL. Похоже, что http:// и https:// каким-то образом меняют это, и я, хоть убей, не могу понять, как.

Комментарии:

1. Вы уверены, что подключены через прокси при тестировании второго примера?

2. ваш прокси обрабатывает https? его нужно было бы настроить довольно тщательно, чтобы иметь возможность прокси-соединения SSL, и (возможно) также нужны хаки на стороне клиента.

3. Значение $_SERVER[HTTP_HOST] не может меняться в зависимости от других частей строки, в которую вы его интерполируете.

4. Да, я подключен через прокси, и да, он принимает https. Я вошел в прокси и перезагрузил страницу, на которой отображались обе версии переменной на странице.

5. Бармар, для меня это тоже не имеет смысла.

Ответ №1:

Оказывается, прокси, вероятно, выполнял поиск и замену в потоке. Я добавил пару строк кода для печати содержимого $ lnk2 в файл сразу после создания, и, конечно же, в нем не было прокси-URL, как и ожидалось. Рад узнать, что я не сходил с ума.