如何设置 curl 的请求头?

How can I set the request header for curl?

提问人:ryan 提问时间:11/18/2010 最后编辑:Noel Yapryan 更新时间:9/12/2023 访问量:402186

问:

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

卷曲

评论

0赞 Ryan Bigg 11/18/2010
你现在有没有可以给我们看的例子?
12赞 gsumk 7/19/2019
添加多个 -H 标志。例如curl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"
1赞 Tyler Rafferty 2/16/2021
您如何看待接受下面的答案?我喜欢我的呵呵;) @Noel Yap

答:

374赞 Mads Mobæk 11/18/2010 #1

只需多次使用该选项:-H

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

评论

4赞 Freewind 4/8/2011
如果标题包含怎么办?"
6赞 Darth Egregious 6/27/2015
@Freewind用单引号而不是双引号将值括起来,或者对其进行转义。在这种情况下,你总是做同样的事情。
62赞 DavidGamba 9/6/2013 #2

有时更改标题是不够的,一些网站也会检查引用者:

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'

在此示例中,referer(curl 中的 -e 或 --referer)是 'localhost'。

85赞 Tyler Rafferty 7/26/2017 #3

要在 curl 请求中传递多个标头,只需在 curl 命令中添加额外的 or 即可。-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 标头字段,例如 User-AgentCookieHost,实际上还有另一种设置方法。curl 命令提供了用于设置这些标头字段的指定选项:

  • -A(或--user-agent):设置“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
2赞 Omkesh Sajjanwar 12/26/2022 #4

使用 GET 请求设置 Header -H “Content-Type: application/json”

例-

curl -H "Content-Type: application/json" -X GET https://jsonplaceholder.typicode.com/posts/1

如果要添加多个标题

curl -H "Connection: keep-alive" -H "Content-Type: application/json -X GET https://jsonplaceholder.typicode.com/posts/1

enter image description here