| 请求构造 |
|---|
| 设置 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 |