TL;DR

curl 是调试 HTTP/API 的第一工具。最常用:curl -sS URLcurl -X POST -d '{}' -H 'Content-Type: application/json' URLcurl -w '%{http_code}'

基础请求

需求命令
GET 并显示响应头curl -i URL
静默模式(不显示进度)curl -sS URL
只看响应头curl -I URL
跟随重定向curl -L URL
输出到文件curl -o file.txt URL / -O(按远程文件名)

带数据请求

需求命令
POST JSONcurl -X POST -H 'Content-Type: application/json' -d '{"k":"v"}' URL
表单提交curl -d 'k=v&k2=v2' URL
上传文件curl -F 'file=@./a.txt' URL
自定义请求头curl -H 'Authorization: Bearer TOKEN' URL
Cookiecurl -b 'name=value' URL / -c cookies.txt 保存

实用参数

参数作用
-w '%{http_code}\n'只输出状态码
--max-time 10超时(秒)
--connect-timeout 5连接超时
-k / --insecure跳过 TLS 校验(仅调试)
-x http://host:port走代理
--limit-rate 1M限速
-A 'UA'自定义 User-Agent
-u user:pass基础认证

高频排查

常见问题

curl 返回 000 是什么原因?

000 表示连接失败或超时(不是 HTTP 状态码)。先用 curl -v URL 看卡在哪一步,再按需加 --connect-timeout 5--max-time 10;仅调试场景才用 -k 跳过 TLS 校验。

curl 怎么发送 POST JSON 请求?

curl -X POST -H 'Content-Type: application/json' -d '{"k":"v"}' URL。注意 -d 默认按表单发送,POST JSON 必须带 Content-Type: application/json

curl 怎么下载文件?

curl -o 文件名 URL 指定保存名;curl -O URL 使用远程文件名;下载大文件加 -L 跟随重定向和 --max-time 防止挂死。

curl 怎么只输出 HTTP 状态码?

curl -s -o /dev/null -w '%{http_code}' URL,这是脚本检查接口是否返回 200 的标准写法。

curl 报 SSL certificate problem 怎么处理?

先更新系统证书(apt install ca-certificates 或系统更新),不要一上来就 -k;仅调试场景才用 --insecure 跳过校验。

来源

最后更新:2026-08-04