Curl post数据并且只获取响应头

回答 2 浏览 6.6万 2008-11-13

我只想从curl请求中获取标头

curl -I www.google.com

一切顺利。现在我也想这么做,但还想传入 post 数据:

curl -I -d'test=test' www.google.com

但我得到的只是:

Warning: You can only select one HTTP request!

有人知道如何做到这一点还是我在做一些愚蠢的事情?

J.D. Fitz.Gerald 提问于2008-11-13
2 个回答
#1楼 已采纳
得票数 124

-I 选项告诉curl 执行HEAD 请求,而-d'test=test' 选项告诉curl 执行POST,因此您告诉curl 执行两种不同的请求类型。

curl -s -d'test=test' -D- -o/dev/null www.google.com 

或者,在 Windows 上:

curl -s -d'test=test' -D- -onul: www.google.com 

据我所知,这是最巧妙的方法。选项有:

  • -D- 将标头转储到列出的文件中,或在传递 - 时将其转储到 stdout,如下所示。
  • -o/dev/null 将正文发送到列出的文件。在这里,我们丢弃正文,因此我们只能看到标题。
  • -s无声(无进度条)
J.D. Fitz.Gerald 提问于2008-11-13
Eddie 修改于2013-09-04
对标志含义的解释会很有帮助Madbreaks 2012-04-04
-s:无声(无进度条)
-d <data>:使用给定的查询字符串执行 POST
-D <file>:将头信息转储到文件(当传递 - 时为 stdout)
-o <file>:将响应输出到文件
无论如何,手册列举了所有这些标志。
raphael 2012-08-20
如果有人想在 Windows 上运行它,只需将 -o/dev/null 替换为 -o nul(在 Windows XP 中测试)。Jan Święcki 2012-12-31
#2楼
得票数 30

-d 表示您正在通过POST 方法发送表单数据。 -I表示您只是通过HEAD查看元数据。

我建议要么

  • 下载到/dev/null并通过-D headerfile将标头写入文件headerfile
  • 使用 -i 在答案中包含标题并跳过第一个空行中的所有内容。
phihag 提问于2008-11-13
我知道这很老了,但我建议添加 -s 来稍微清理输出。rossipedia 2010-06-15
哇,是的,-i 正是我认为每个人都在寻找的。为什么其他答案更复杂?我确信这里有一些细微差别。Cody Reichert 2018-02-16
标签