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


当前回答

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

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

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

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

希望这能有所帮助。

其他回答

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

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

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

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

希望这能有所帮助。

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

我知道这有点晚了,但我最喜欢的方法是netcat,因为你得到了确切的旋度发送;这可能与——trace或——trace-ascii选项不同,后者不会正确显示非ascii字符(它们只显示为点或需要解码)。

你可以很容易地通过打开两个终端窗口,在第一种类型:

nc -l localhost 12345

这将在本地机器的端口12345上打开一个监听进程。

在第二个终端窗口中输入curl命令,例如:

curl --form 'foo=bar' localhost:12345

在第一个终端窗口中,您将确切地看到请求中发送的curl。

当然现在nc不会发送任何响应(除非你自己输入),所以你需要中断curl命令(control-c),并为每个测试重复这个过程。

然而,这对于简单地调试请求是一个有用的选项,因为您不需要在任何地方进行往返,也不需要在任何地方生成虚假的迭代请求,直到您得到正确的请求;一旦你对这个命令感到满意,只需将它重定向到一个有效的URL,你就可以开始了。

您也可以为任何cURL库做同样的事情,只需编辑您的请求以指向本地nc侦听器,直到您满意为止。

下面是我的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

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