Skip to content

curl 标志 详解

日常使用的 curl 标志,按用途分组:构造请求、设置标头、身份验证、表明身份、控制输出、跟随重定向、调整连接以及调试。每行将标志与一个贴近实际的调用示例配对。

curl 发送 HTTP 请求并打印响应正文。它的大部分能力都在标志里:它们选择方法、附加标头和数据、处理身份验证,并决定打印什么。更清晰的地方使用长格式;短格式是单个字母。给 URL 加上引号,以免 shell 吞掉查询字符串。

参考表格 · 54 条目
54 of 54 rows
请求构造
设置 HTTP 方法。curl -X POST https://api.test
添加一个请求标头。curl -H "Accept: application/json" URL
发送请求体(设为 POST 并使用默认内容类型)。curl -d "name=Ada" URL
把 -d 的值作为查询参数附加到 GET 请求。curl -G -d "q=hi" URL
发送 multipart 表单数据(文件上传)。curl -F "file=@photo.png" URL
发送经过 URL 编码的表单数据。curl --data-urlencode "name=Ada Lovelace" URL
用 PUT 上传文件。curl -T big.zip URL
把上传内容追加到远程文件,而不是替换它。curl -a -T log.txt ftp://server.test/logs/log.txt
JSON 与 API
以正确的内容类型发送 JSON。curl -H "Content-Type: application/json" -d '{"a":1}' URL
把文件内容作为请求体发送。curl -d @body.json URL
无需手动设置标头即可发送 JSON(curl 7.82+)。curl --json '{"a":1}' URL
认证
带用户名和密码的 HTTP Basic 认证。curl -u ada:s3cr3t URL
发送 OAuth bearer 令牌。curl --oauth2-bearer TOKEN URL
手动发送任意令牌方案。curl -H "Authorization: Bearer TOKEN" URL
为双向 TLS 出示客户端证书及其密钥。curl --cert client.pem --key key.pem URL
用一个 CA 捆绑包文件验证服务器。curl --cacert ca.pem URL
用包含多个 CA 的目录验证服务器。curl --capath /etc/ssl/certs URL
通过代理发送请求。curl -x http://proxy.test:8080 URL
仅对通往代理的一跳跳过 TLS 验证。curl -x https://proxy.test:8443 --proxy-insecure URL
要求 TLS 1.3 作为最低版本。curl --tlsv1.3 URL
身份
发送自定义 User-Agent 字符串。curl -A "Mozilla/5.0" URL
发送 Referer 标头。curl -e https://example.com/page URL
随请求发送 cookie。curl -b "session=abc123" URL
把响应 cookie 保存到文件。curl -c cookies.txt URL
输出
把响应正文写入文件。curl -o page.html URL
使用远程文件名保存响应正文。curl -O https://site/file.tgz
在正文之前打印响应标头。curl -i URL
只获取标头(发送 HEAD)。curl -I URL
隐藏进度条和错误信息。curl -s URL
在正文之后打印格式化字符串(耗时、状态码)。curl -w "%{http_code}\n" -o /dev/null URL
HTTP 错误时以非零码退出并跳过错误正文。curl -f URL
HTTP 错误时以非零码退出但仍打印正文。curl --fail-with-body URL
根据 Content-Disposition 标头命名保存的文件。curl -OJ URL
从中断处继续未完成的传输。curl -C - -O URL
显示进度条而不是默认的计量器。curl -# -O URL
静默运行时也打印错误。curl -sS URL
把响应标头写入文件。curl -D headers.txt URL
请求压缩响应并自动解码。curl --compressed URL
在 -o 路径中创建缺失的目录。curl -o cache/api/data.json --create-dirs URL
重定向与连接
跟随 3xx 重定向。curl -L URL
等待 TCP 连接的最长秒数。curl --connect-timeout 5 URL
整个请求的最长秒数。curl --max-time 30 URL
跳过 TLS 证书验证。curl -k https://self-signed.test
最多重试 N 次瞬时错误。curl --retry 3 URL
对任何错误都重试,而不只是瞬时错误。curl --retry 3 --retry-all-errors URL
强制连接使用 IPv4 或 IPv6。curl -4 URL
把主机和端口映射到地址,绕过 DNS。curl --resolve api.test:443:127.0.0.1 https://api.test
把传输绑定到某个网络接口或地址。curl --interface eth0 URL
同时传输多个 URL。curl -Z URL1 URL2
传输时使用 HTTP/2 或 HTTP/3。curl --http3 URL
正文到达即流式输出,而不是先缓冲。curl -N URL
从配置文件读取更多标志。curl -K flags.cfg URL
调试
打印完整的请求与响应交互过程。curl -v URL
以十六进制转储收发的所有内容。curl --trace - URL