命令行curl可使用-D
选项显示响应头,但我想查看它发送的请求头。 我怎样才能作到这一点? php
详细选项很方便,可是若是你想看到curl所作的一切 (包括传输的HTTP主体,而不单单是标题),我建议使用如下选项之一: html
--trace-ascii -
#stdout --trace-ascii output_file.txt
我相信你想要传递给curl的命令行开关是-I
。 shell
用法示例: bash
$ curl -I http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287 HTTP/1.1 301 Moved Permanently Date: Sat, 29 Dec 2012 15:22:05 GMT Server: Apache Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/ Content-Type: text/html; charset=iso-8859-1
此外,若是您遇到响应HTTP状态代码301,您可能还想传递-L
参数开关告诉curl
遵循URL重定向,而且在这种状况下,打印全部页面的标题(包括URL重定向) ,以下图所示: curl
$ curl -I -L http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287 HTTP/1.1 301 Moved Permanently Date: Sat, 29 Dec 2012 15:22:13 GMT Server: Apache Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/ Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 302 Found Date: Sat, 29 Dec 2012 15:22:13 GMT Server: Apache Set-Cookie: UID=b8c37e33defde51cf91e1e03e51657da Location: noaccess.php Content-Type: text/html HTTP/1.1 200 OK Date: Sat, 29 Dec 2012 15:22:13 GMT Server: Apache Content-Type: text/html
在调试Web应用程序时,我必须本身克服这个问题。 -v
很棒,但对个人口味来讲有点过于冗长。 这是我提出的(仅限bash)解决方案: ide
curl -v http://example.com/ 2> >(sed '/^*/d')
这是有效的,由于-v
的输出发送到stderr,而不是stdout。 经过这个重定向到一个子shell,咱们能够sed
来除去这样开始的行*
。 因为实际输出不经过子shell,所以不会受到影响。 使用子shell有点笨拙,但这是将stderr重定向到另外一个命令的最简单方法。 (正如我所说,我只是用它进行测试,因此它适用于我。) 测试
curl的-v选项在错误输出中过于冗长,错误输出包含前导*
(状态行)或>
(请求头字段)或<
(响应头字段)。 只获取请求头字段: url
curl -v -sS www.stackoverflow.com 2>&1 >/dev/null | grep '>' | cut -c1-2 --complement
只获取请求头字段: spa
curl -v -sS www.stackoverflow.com 2>&1 >/dev/null | grep '<' | cut -c1-2 --complement
或者使用-D选项将其转储到/tmp/test.txt
文件中 命令行
curl -D /tmp/test.txt -sS www.stackoverflow.com > /dev/null
为了过滤-v
输出,你应该将错误输出定向到终端并将std输出定向到/ dev / null,-s选项是禁止进度计量
显示响应标头的流行答案,但OP询问了请求标头。
curl -sD - -o /dev/null http://example.com
-s
- 避免显示进度条 -D -
- 将标头转储到文件,可是-
将其发送到stdout -o /dev/null
- 忽略响应正文 这比-I
好,由于它不发送HEAD
请求,这会产生不一样的结果。
它比-v
更好,由于你不须要那么多hack来解开它。