【问题标题】:Echo curl request header & body without sending it?Echo curl 请求标题和正文而不发送它?
【发布时间】:2011-09-05 00:40:34
【问题描述】:

使用 curl 命令行工具,是否可以 echo 打印或查看请求而不发送?有点像-n 选项?我想查看请求标头和正文,以及包含的任何其他内容。除了标题和正文之外,还有其他发送的内容吗?

【问题讨论】:

    标签: curl http-headers request httprequest echo


    【解决方案1】:

    HTTP request 由请求行、标头和正文构成。

    curl 似乎没有进行“试运行”的标志。根据您的需要,您可以使用netcat 作为代理查看您想要的内容:

    $ nc -l localhost 8000 &
    [1] 3150
    $ curl --proxy localhost:8000 --silent --max-time 1 http://www.stackoverflow.com
    GET http://www.stackoverflow.com HTTP/1.1
    User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
    Host: www.stackoverflow.com
    Accept: */*
    Proxy-Connection: Keep-Alive
    
    [1]+  Done                    nc -l localhost 8000
    

    【讨论】:

    • 您是如何让 netcat 干净地终止的 ([1]+ Done)?在我的测试中,我发现我需要Ctrl-C 退出它,然后fg 它,然后Ctrl-D。它有效,但似乎是退出 netcat 的一种笨拙方式。
    • 啊 - 看起来关键是 --max-time 1 标志,用于超时,--silent 用于抑制超时消息。我一开始都省略了。
    • ...当然这不适用于 HTTPS,它只显示 CONNECT www.stackoverflow.com:443 HTTP/1.1 和 Proxy-Connection: Keep-Alive
    【解决方案2】:

    让我支持使用 'nc' (netcat) 来查看所有详细信息的建议,而无需将任何东西发送到任何异地。

    但您也可以使用--trace--trace-ascii 命令获取任何 curl 命令行请求的所有详细信息,这些命令可以转储所有传入和传出数据以及检查请求。

    与“nc”相比,这些选项具有额外的好处,即它们可以显示协议详细信息,即使是 HTTPS 操作和“真实”命令行等。

    【讨论】:

    • --trace - 用于标准输出。
    猜你喜欢
    • 2017-08-31
    • 2020-10-10
    • 1970-01-01
    • 2018-12-04
    • 2020-04-05
    • 2013-06-18
    • 2012-01-13
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多