Echo curl 请求标题和正文而不发送它?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

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

$ nc -l localhost 8000 &
[1] 3150
$ curl --proxy localhost:8000 --silent --max-time 1 http://www.***.com
GET http://www.***.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.***.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.***.com:443 HTTP/1.1 和 Proxy-Connection: Keep-Alive【参考方案2】:

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

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

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

【讨论】:

--trace - 用于标准输出。

以上是关于Echo curl 请求标题和正文而不发送它?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter HTTP 请求使用 xml 正文发送

如何使用命令行 curl 显示请求标头

使用 Apache CXF 在 SOAP POST 请求中出错,但 curl 有效

CURL Post 不起作用(未发送正文)

Zapier 应用程序:使用 GET 请求发送正文

在 Spring MVC 中使用 curl 将字符串值数组作为请求正文发布