为什么 curl 对 $_SERVER['REQUESTI_URI'] 的响应与浏览器不同?

为什么 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我我所期望的

答案1

我只能假设它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

相关内容