Назад | Перейти на главную страницу

Почему curl дает другой ответ для $ _SERVER ['REQUESTI_URI'], чем браузеры?

У меня есть простая тестовая страница PHP:

<?php
  echo $_SERVER['HTTP_HOST'] . '<br/>';
  echo $_SERVER['REQUEST_URI'];
?>

Когда я открываю эту страницу в браузере (я тестировал хром и ссылки), он дает мне ожидаемый результат:

10.1.25.222
/test.php

Но когда я получаю доступ к этому с curl 10.1.25.222/test.php:

10.1.25.222<br/>HTTP://10.1.25.222/test.php

Давая мне HTTP_HOST Я жду, но не REQUEST_URI Я ожидаю

Я могу только предположить, что curl должен отправлять весь URL в своем GET запрос. Я протестировал оба приведенных ниже метода на Apache, и оба они работают и дают результаты, аналогичные вашим:

Что большинство браузеров, похоже, делают в своем HTTP-запросе:

GET /some/path HTTP/1.1
Host: www.domain.com

Что делает curl:

GET HTTP://www.domain.com/some/path HTTP/1.1
Host: www.domain.com