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

命令行curl可使用-D选项显示响应头,但我想查看它发送的请求头。 我怎样才能作到这一点? php


#1楼

详细选项很方便,可是若是你想看到curl所作的一切 (包括传输的HTTP主体,而不单单是标题),我建议使用如下选项之一: html

  • --trace-ascii - #stdout
  • --trace-ascii output_file.txt

#2楼

我相信你想要传递给curl的命令行开关是-Ishell

用法示例: 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

#3楼

在调试Web应用程序时,我必须本身克服这个问题。 -v很棒,但对个人口味来讲有点过于冗长。 这是我提出的(仅限bash)解决方案: ide

curl -v http://example.com/ 2> >(sed '/^*/d')

这是有效的,由于-v的输出发送到stderr,而不是stdout。 经过这个重定向到一个子shell,咱们能够sed来除去这样开始的行* 。 因为实际输出不经过子shell,所以不会受到影响。 使用子shell有点笨拙,但这是将stderr重定向到另外一个命令的最简单方法。 (正如我所说,我只是用它进行测试,因此它适用于我。) 测试


#4楼

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选项是禁止进度计量


#5楼

显示响应标头的流行答案,但OP询问了请求标头。

curl -sD - -o /dev/null http://example.com
  • -s - 避免显示进度条
  • -D - - 将标头转储到文件,可是-将其发送到stdout
  • -o /dev/null - 忽略响应正文

这比-I好,由于它不发送HEAD请求,这会产生不一样的结果。

它比-v更好,由于你不须要那么多hack来解开它。

相关文章
相关标签/搜索