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


当前回答

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

curl --trace-ascii - {URL}

CURLOPT_DEBUGFUNCTION如果你使用libcurl

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

其他回答

curl的——trace-ascii选项将显示请求头,以及响应头和响应体。

例如,命令

curl --trace-ascii curl.trace http://www.google.com/ 

生成文件旋度。开始的跟踪如下:

== Info: About to connect() to www.google.com port 80 (#0)
== Info:   Trying 209.85.229.104... == Info: connected
== Info: Connected to www.google.com (209.85.229.104) port 80 (#0)
=> Send header, 145 bytes (0x91)
0000: GET / HTTP/1.1
0010: User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3
0050:  OpenSSL/0.9.7l zlib/1.2.3
006c: Host: www.google.com
0082: Accept: */*
008f: 

它还得到了一个响应(准确地说,是302响应,但不相关),该响应被记录下来。


如果你只想保存响应头,使用——dump-header选项:

curl -D file url
curl --dump-header file url

如果您需要更多关于可用选项的信息,请少使用curl——help |(它产生几百行输出,但提到了很多选项)。或者找到手册页,那里有更多关于选项含义的解释。

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

你可以使用-iv来查看

$> curl  -ivH "apikey:ad9ff3d36888957" --form  "file=@/home/mar/workspace/images/8.jpg" --form "language=eng" --form "isOverlayRequired=true" https://api.ocr.space/Parse/Image

向https://http-tools.appspot.com/reflect-http-request/some-unique-id发送一个示例请求,并通过其对应的查找器url https://http-tools.appspot.com/reflect-http-request-finder/some-unique-id检查该请求包含什么(请求头、请求体、请求参数)。你可以使用任何字符串而不是某个唯一的id,查看https://http-tools.appspot.com了解更多细节。

我认为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
...