Php

為什麼 curl 對 $_SERVER 給出不同的響應′稀土_QU_和小號噸一世在R一世′′R和問在和小號噸一世在R一世′‘REQUESTI_URI’比瀏覽器?

  • July 25, 2013

我有一個簡單的測試 PHP 頁面:

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

當我使用瀏覽器訪問此頁面時(我已經測試了 chrome 和連結),它給了我期望的輸出:

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必須在其GET請求中發送整個 URL。我已經針對 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

引用自:https://serverfault.com/questions/526243