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


当前回答

你可以使用-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

其他回答

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

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

你可以通过使用"-"作为文件名直接将头文件转储到标准输出,例如查看头文件和内容,并遵循重定向,所有这些都在一个输出中:

curl -L -D - -s [url]

唯一的方法,我设法看到我的外向头(卷曲与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));

下面是我的http客户端在php使post查询包含cookie:

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);

///调试信息 echo $响应; 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

这个问题没有指定是指名为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