在向服务器发送请求时,如何查看由curl创build的请求标头?

当我向服务器发送请求时,我想查看curl所做的请求头。 我如何检查?

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

这个问题没有指定命令行命令curl是指的还是整个cURL库。

以下使用cURL库的PHP代码使用第一个参数作为HTTP方法(例如“GET”,“POST”,“OPTIONS”),第二个参数作为URL。

 <?php $ch = curl_init(); $f = tmpfile(); # will be automatically removed after fclose() curl_setopt_array($ch, array( CURLOPT_CUSTOMREQUEST => $argv[1], CURLOPT_URL => $argv[2], CURLOPT_RETURNTRANSFER => 1, CURLOPT_FOLLOWLOCATION => 0, CURLOPT_VERBOSE => 1, CURLOPT_HEADER => 0, CURLOPT_CONNECTTIMEOUT => 5, CURLOPT_TIMEOUT => 30, CURLOPT_STDERR => $f, )); $response = curl_exec($ch); fseek($f, 0); echo fread($f, 32*1024); # output up to 32 KB cURL verbose log fclose($f); curl_close($ch); echo $response; 

用法示例:

 php curl-test.php OPTIONS https://google.com 

请注意,结果几乎与以下命令行相同

 curl -v -s -o - -X OPTIONS https://google.com 

唯一的办法,我设法看到我的传出标题(curl与PHP)是使用以下选项:

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

获取您的debugging信息:

 $data = curl_exec($ch); var_dump($data); var_dump(curl_getinfo($ch)); 
 curl -D file url curl --dump-header file url 

看到:

 curl --help | less 

--trace--trace-ascii选项对于标题是正确的。

例如,请求:

 curl --trace-ascii curl.trace --url 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回应,确切而无关紧要)logging。

curl –trace-ascii {filename}或者使用一个破折号而不是文件名将它发送到stdout:

 curl --trace-ascii - {URL} 

CURLOPT_DEBUGFUNCTION如果你正在使用libcurl

这显示你curl发送和接收的一切 ,一些额外的信息抛出。

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

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

这会打印出REQUEST头和RESPONSE头以及其他有用的信息,比如SSL证书和现有的TCP连接是否被重复使用。 -v标志可以与其他标志结合使用,当然也可以遵循redirect并提示进行HTTPauthentication:

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

希望这可以帮助。

  curl -s -v -o / dev / null -H“Testheader:test”http://www.example.com 

如果您想发送HEAD请求而不是GET请求,也可以使用-I选项。

将头文件转储到一个文件中,并将响应的有效负载转储到另一个文件中

 curl -k -v -u user:pass "url" --trace-ascii headers.txt >> response.txt 

这里是我的http客户端在PHP中使用cookies进行后期查询:

 function http_login_client($url, $params = "", $cookies_send = "" ){ // Vars $cookies = array(); $headers = getallheaders(); // Perform a http post request to $ur1 using $params $ch = curl_init($url); $options = array( CURLOPT_POST => 1, CURLINFO_HEADER_OUT => true, CURLOPT_POSTFIELDS => $params, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HEADER => 1, CURLOPT_COOKIE => $cookies_send, CURLOPT_USERAGENT => $headers['User-Agent'] ); curl_setopt_array($ch, $options); $response = curl_exec($ch); 

/// DEBUG info echo $ response; var_dump(curl_getinfo($ ch)); ///

  // Parse response and read cookies preg_match_all('/^Set-Cookie: (.*?)=(.*?);/m', $response, $matches); // Build an array with cookies foreach( $matches[1] as $index => $cookie ) $cookies[$cookie] = $matches[2][$index]; return $cookies; } // end http_login_client 

您可以使用wireshark或tcpdump来查看任何networkingstream量(也是http)。

你可以通过使用-iv来看到它

 $> curl -ivH "apikey:ad9ff3d36888957" --form "file=@/home/mar/workspacehttp://img.dovov.com8.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请求头,请求体,请求参数) ://http-tools.appspot.com/reflect-http-request-finder/some-unique-id 。 您可以使用任何string,而不是some-unique-id ,请查看https://http-tools.appspot.com了解更多详情。;