![为什么 curl 对 $_SERVER['REQUESTI_URI'] 的响应与浏览器不同?](https://linux22.com/image/803282/%E4%B8%BA%E4%BB%80%E4%B9%88%20curl%20%E5%AF%B9%20%24_SERVER%5B'REQUESTI_URI'%5D%20%E7%9A%84%E5%93%8D%E5%BA%94%E4%B8%8E%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
我有一个简单的测试 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