使用curl -v ...
,即打印出输入和输出标头的详细模式。但是,此信息不是通过管道传输的,我无法 grep 出我不需要的行。
如何过滤curl header 输出?
小智 7
的标头输出curl
被打印到标准错误。所以你必须使用重定向,例如 grep 出Content-Length
标头:
curl -v google.com 2>&1 | grep -vi content-length
Run Code Online (Sandbox Code Playgroud)
curl -v
更好的选择是告诉将标头输出到 STDOUT,而不是使用(详细模式) curl
,而不需要所有额外的调试内容,也不打印响应正文。这样,您可以grep
仅通过响应标头,避免 shell 重定向的需要,并且知道您的过滤不必理解和解析curl
\xe2\x80\x99s 内部调试消息(这些消息可能不被视为其 API 的一部分) )。
您可以通过组合-I
(不打印正文)、-X\xc2\xabMETHOD\xc2\xbb
(覆盖方法)和-s
(静默,不显示进度条)参数来完成此操作。
curl -sIXGET https://www.google.com/ | grep -i content-type:\n
Run Code Online (Sandbox Code Playgroud)\n-s
指示curl
隐藏进度条。如果省略并curl
检测到它正在终端中运行,它将绕过管道并直接与终端对话以显示进度条,这通常没有帮助并且会使终端混乱。-I
指示curl
在收到标头后断开与服务器的连接,而不是等待正文。如果您实际上如问题中所述,只对 grep感兴趣,那么这很有用。HEAD
它还具有将请求方法默认为您指定的副作用-XHEAD
。-X\xc2\xabmethod\xc2\xbb
(例如,-XGET
)覆盖该方法。在许多情况下,HEAD
请求就是您想要的,因为 HTTP 标准规定HEAD
必须返回与同一请求完全相同的标头GET
。但是,在调试服务器或使用不符合标准的服务器时,指示curl
发出GET
请求但在读取响应正文之前断开连接可能会很有用。这样,您可以看到服务器响应时发送的实际标GET
头,而不是希望服务器正确实现。 归档时间: |
|
查看次数: |
9789 次 |
最近记录: |