web-dev-qa-db-ja.com

curlが$ _SERVER ['REQUESTI_URI']に対してブラウザとは異なる応答を返すのはなぜですか?

簡単なテストがあります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は与えません

3
grimetime

curlGETリクエストでURL全体を送信している必要があると想定することしかできません。以下の両方の方法をApacheに対してテストしましたが、どちらも機能し、現在の状況と同様の結果が得られるようです。

ほとんどのブラウザがHTTPリクエストで行うように思われること:

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

カールがしているように見えること:

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