我如何为卷曲设置请求头?

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

343708 次浏览

只需要多次使用-H参数:

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

有时候改变标题是不够的,有些网站还会检查引用者:

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'

在这个例子中,引用器(-e或curl中的——referer)是'localhost'。

要在curl请求中传递多个头信息,只需在curl命令中添加额外的-H--header即可。

例子

//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报头字段,如用户代理饼干宿主,实际上有另一种方法来设置它们。curl命令提供了指定的选项来设置这些报头字段:

  • -A(或——user-agent):设置“user-agent”;字段。
  • -b(或——cookie):设置“cookie”;字段。
  • -e(或——referer):设置“referer”;字段。
  • -H(或——header):设置“header”;场

例如,下面两个命令是等价的。两者都改变了“User-Agent"HTTP报头中的字符串。

    $ 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