提问人:ryan 提问时间:11/18/2010 最后编辑:Noel Yapryan 更新时间:9/12/2023 访问量:402186
如何设置 curl 的请求头?
How can I set the request header for curl?
答:
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-Agent、Cookie、Host,实际上还有另一种设置方法。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
评论
curl -H "Content-Type : application/json" -H "Authorization : Token token='yourtokenhere'"