如何设置curl的请求标头?


196

如何在curl请求的标头中传递多个值?


您是否有一个正在使用的示例可以向我们展示?
瑞安·比格

4
添加多个-H标志。例如curl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
gsumk '19

Answers:


240

只需-H多次使用参数:

curl -H "Accept-Charset: utf-8" -H "Content-Type: application/x-www-form-urlencoded" http://www.some-domain.com

如果标题包含该"怎么办?
Freewind

2
@Freewind用单引号而不是双引号将值包装起来,或者转义它。在这种情况下,您总是会做同样的事情。
Darth Egregious

47

有时仅更改标题是不够的,某些站点也会检查引荐来源:

curl -v \
     -H 'Host: restapi.some-site.com' \
     -H 'Connection: keep-alive' \
     -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
     -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' \
     -e localhost \
     -A 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36' \
     'http://restapi.some-site.com/getsomething?argument=value&argument2=value'

在此示例中,引荐来源网址(在curl中为-e或--referer)为“ localhost”。


44

要在curl请求中传递多个标头,您只需添加其他-H--header到curl命令即可。

//Simplified
$ curl -v -H 'header1:val' -H 'header2:val' URL

//Explanatory
$ curl -v -H 'Connection: keep-alive' -H 'Content-Type: application/json'  https://www.example.com

走得更远

对于标准HTTP标头字段,例如User-AgentCookieHost,实际上还有另一种设置它们的方法。curl命令提供了用于设置这些标题字段的指定选项:

  • -A(或--user-agent):设置“用户代理”字段。
  • -b(或--cookie):设置“ Cookie”字段。
  • -e(或--referer):设置“ Referer”字段。
  • -H(或--header):设置“ Header”字段

例如,以下两个命令是等效的。他们两个都在HTTP标头中更改“ User-Agent”字符串。

    $ curl -v -H "Content-Type: application/json" -H "User-Agent: UserAgentString" https://www.example.com
    $ curl -v -H "Content-Type: application/json" -A "UserAgentString" https://www.example.com
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.