当我向服务器发送请求时,我想看到curl所做的请求头。我要怎么检查呢?


当前回答

您可以使用wireshark或tcpdump来查看任何网络流量(http也可以)。

其他回答

您可以使用wireshark或tcpdump来查看任何网络流量(http也可以)。

Curl——trace-ascii {filename}或使用单个破折号来代替文件名,将其发送到标准输出:

curl --trace-ascii - {URL}

CURLOPT_DEBUGFUNCTION如果你使用libcurl

这显示了curl发送和接收的所有内容,并附带了一些额外的信息。

我尝试了这里的答案,发现最有用和最简单的一个还没有被列为答案,但它是:

curl -v https://example.com/path

这将打印出REQUEST报头、RESPONSE报头以及其他有用的信息,如SSL证书以及是否重用了现有的TCP连接。当然,-v标志可以与其他标志结合使用,例如跟随重定向和HTTP认证提示:

curl -vL --user my_username https://example.com/path

希望这能有所帮助。

我认为curl -verbose/-v是最简单的。它将输出请求头(以'>'为前缀的行),而无需写入文件:

$ curl -v -I -H "Testing: Test header so you see this works" http://stackoverflow.com/
* About to connect() to stackoverflow.com port 80 (#0)
*   Trying 69.59.196.211... connected
* Connected to stackoverflow.com (69.59.196.211) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/0.9.8h zlib/1.2.3 libssh2/0.15-CVS
> Host: stackoverflow.com
> Accept: */*
> Testing: Test header so you see this works
>
< HTTP/1.0 200 OK
...

唯一的方法,我设法看到我的外向头(卷曲与php)是使用以下选项:

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

获取调试信息:

$data = curl_exec($ch);
var_dump($data);
var_dump(curl_getinfo($ch));