排查 API 调用失败
后端服务上线后,接口返回 502 错误码,但前端日志里看不出具体原因。运维需要在服务器上模拟一次完整请求,看服务端实际返回的响应头和状态码。本工具提供了完整的请求参数配置,包括 URL、请求头、请求体、超时时间,执行后直接输出响应状态码和耗时,帮助快速定位是网关超时还是后端服务崩溃。
调试接口时最烦的,不是参数写错,是 curl 命令敲到一半忘了 -H 和 -d 的先后顺序,或者记不住怎么把 Cookie 塞进请求头。这个工具把常用选项按用途分组,每个选项配一个可运行的场景示例,点击就能看到请求构造和响应。所有解析在浏览器内完成,命令不会离开本地。适合前后端联调时快速查语法、写测试脚本前确认参数写法。
后端服务上线后,接口返回 502 错误码,但前端日志里看不出具体原因。运维需要在服务器上模拟一次完整请求,看服务端实际返回的响应头和状态码。本工具提供了完整的请求参数配置,包括 URL、请求头、请求体、超时时间,执行后直接输出响应状态码和耗时,帮助快速定位是网关超时还是后端服务崩溃。
对接第三方登录时,回调地址总是返回 'redirect_uri_mismatch'。开发需要手动构造带授权码的 GET 请求,验证回调地址是否被正确编码。本工具支持直接填写 URL 和查询参数,自动处理 URL 编码,执行后能看到服务端返回的 token 或错误详情,省去手动拼接和编码的反复试错。
前端资源更新后,用户端仍加载旧版本。运维需要在不同节点上模拟请求,看响应头里 X-Cache 字段是 HIT 还是 MISS。本工具可以指定请求头(如 User-Agent、Accept-Encoding),并查看完整的响应头信息,通过对比不同节点的缓存状态,确认 CDN 刷新是否已全球生效。
支付系统配置了异步回调地址,但回调日志里总是报 'timeout'。开发需要模拟支付平台发送 POST 请求到回调接口,检查服务端是否在规定时间内返回 200。本工具支持自定义请求体(JSON/XML)和超时时间,执行后显示服务端响应状态和耗时,帮助判断是回调接口处理慢还是网络延迟。
移动端用户反馈接口返回的数据格式异常,但 PC 端正常。测试需要模拟移动端 User-Agent 发送请求,看服务端是否根据客户端类型返回了不同结构。本工具允许自定义请求头,包括 User-Agent、Accept-Language 等,执行后对比返回体,快速定位服务端对移动端的特殊处理逻辑是否有 bug。
| 输入 | 输出 | 说明 |
|---|---|---|
| curl -I https://www.example.com | HTTP/2 200 content-type: text/html content-length: 1256 ... | 常规:-I 仅获取响应头,不下载正文,验证基本 HEAD 请求行为 |
| curl -X POST -d 'name=test' https://httpbin.org/post | { "form": { "name": "test" }, "headers": { "Content-Type": "application/x-www-form-urlencoded" } } | 常规:POST 请求 + 表单数据,验证 -X 和 -d 组合的正确用法 |
| curl -o /tmp/out.txt https://example.com/largefile | % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 50M 100 50M 0 0 10.5M 0 0:00:04 0:00:04 --:--:-- 10.5M | 常规:带进度条的下载,验证 -o 输出重定向,适合大文件场景 |
| curl --connect-timeout 3 https://192.0.2.1 | curl: (28) Connection timed out after 3001 milliseconds | 边界:连接超时,验证 --connect-timeout 生效,测试不可达地址 |
| curl -H "Authorization: Bearer abc123" https://api.example.com/data | { "status": "ok", "data": [...] } | 边界:自定义请求头,验证 -H 传递 Bearer Token,常见于 API 鉴权 |
| curl -v https://example.com | * Trying 93.184.216.34:443... * Connected to example.com (93.184.216.34) port 443 (#0) * SSL connection using TLSv1.3 > GET / HTTP/1.1 > Host: example.com > User-Agent: curl/7.68.0 ... < HTTP/1.1 200 OK ... | 易错:-v 输出详细握手和请求/响应,新手常误以为这是错误信息,实际是调试利器 |
| curl --data-urlencode 'param=hello world' https://httpbin.org/post | { "form": { "param": "hello world" }, "headers": { "Content-Type": "application/x-www-form-urlencoded" } } | 易错:--data-urlencode 自动编码空格为 %20,而 -d 不会编码,新手容易混淆导致参数错误 |
1.URL 未用引号包裹,& 被 Shell 吞掉
curl https://api.example.com?key=abc&format=jsoncurl 'https://api.example.com?key=abc&format=json'Shell 中 & 是后台执行符,不加引号时 &format=json 会被解释为命令分隔符,导致只发送 key=abc 部分。
2.POST 请求漏写 -d 参数,默认变 GET
curl https://httpbin.org/post name=alice age=30curl -d 'name=alice&age=30' https://httpbin.org/postCurl 默认用 GET 方法,即使 URL 是 /post 也不会自动切换。必须显式用 -d 或 --data 才能发送 POST 请求体。
3.JSON 数据未转义引号,Shell 报错
curl -X POST -H 'Content-Type: application/json' -d '{"name": "alice"}' https://api.example.comcurl -X POST -H 'Content-Type: application/json' -d '{"name":"alice"}' https://api.example.comShell 单引号内双引号无需转义,但反斜杠会被保留。正确做法是去掉反斜杠,或改用双引号包裹外层并转义内部双引号。
4.文件上传用 -F 时忘记 @ 前缀
curl -F 'file=photo.jpg' https://upload.example.comcurl -F 'file=@photo.jpg' https://upload.example.com-F 的 value 如果不加 @,Curl 会把字符串 'photo.jpg' 作为字段值发送,而不是读取本地文件。@ 是文件上传的必需前缀。
5.HTTPS 证书验证失败时直接加 -k 跳过
curl -k https://internal.example.comcurl --cacert /path/to/ca-bundle.crt https://internal.example.com-k 会关闭所有证书验证,存在中间人攻击风险。正确做法是指定正确的 CA 证书或使用 --resolve 固定证书指纹。
6.Cookie 文件路径写错导致 -b 无效
curl -b cookies.txt https://example.comcurl -b /tmp/cookies.txt https://example.comCurl 的 -b 参数若只给文件名,会在当前工作目录查找。若文件不存在则静默忽略,不会报错。建议用绝对路径或先确认文件存在。
7.重定向时未加 -L,只拿到 301 响应
curl https://httpbin.org/redirect/1curl -L https://httpbin.org/redirect/1Curl 默认不跟随 HTTP 重定向,只返回 301/302 状态码和 Location 头。加 -L 后会自动跟随,最多重定向 50 次(可用 --max-redirs 调整)。
8.输出重定向 > 与 curl -o 混用,文件内容异常
curl -o output.html https://example.com > output.htmlcurl -o output.html https://example.com同时使用 -o 和 > 会导致文件被打开两次,输出内容可能交错或截断。应二选一:-o 指定文件名,或用 > 重定向 stdout。
HTTP 响应时间 = T₃ + T₄ + T₅ + T₆
T₃DNS 解析耗时(毫秒)T₄TCP 连接耗时(毫秒)T₅TLS 握手耗时(毫秒)T₆首字节响应耗时(毫秒)用 curl -w 测试某 API:DNS 解析 12ms、TCP 连接 45ms、TLS 握手 68ms、首字节响应 230ms → 总响应时间 = 12+45+68+230 = 355ms。
本工具只展示 curl 命令的写法示例和选项说明,不向服务器发送实际请求。如果命令在终端执行报错,常见原因包括:URL 需要引号包裹(尤其含 & 或 ? 时)、Windows 下双引号与 Linux 单引号混用、或漏了 -H 头的冒号。建议先在终端用 curl --version 确认版本,再对照本页的示例逐项检查参数顺序。
可以。本工具提供场景化的 curl 命令示例,每个示例都标注了适用场景(如 POST JSON 数据、带 Cookie 请求、文件上传等)。找到匹配场景后,直接复制命令文本到终端执行即可。如果命令含示例占位符(如 {your_token}),请替换为实际值。
浏览器自动携带了 Cookie、User-Agent 等请求头,而 curl 默认不携带。本工具示例里包含了常见场景所需的请求头写法:比如 -H 'User-Agent: Mozilla/5.0' 模拟浏览器、-H 'Cookie: session=xxx' 带登录态。如果目标网站有反爬机制,还需额外添加 Referer 头。
-d 直接发送原始字符串,如果数据里含有 &、=、空格等特殊字符,服务端可能解析错误。--data-urlencode 会自动对值进行 URL 编码(比如空格变 %20),适合发送表单数据或含非 ASCII 字符的字段。本工具在 POST 示例中同时提供了两种写法,可对比查看差异。如果数据来自用户输入,建议始终用 --data-urlencode。
上传文件用 -F 参数,格式为 -F 'field=@/path/to/file'。注意 @ 符号不能省略,且路径用绝对路径最稳。如果同时上传文件和其他字段,写多个 -F 即可。本工具在「文件上传」示例中给出了带文件字段和普通字段的完整写法。Windows 下路径用反斜杠时需用双引号包裹。
不一定。单独写 -d 时 curl 会自动使用 POST 方法,加 -X POST 只是显式声明。但某些场景必须显式指定方法:比如 -X PUT 配合 -d 做资源更新、或 -X DELETE 发删除请求。本工具在 RESTful API 示例中分别给出了 GET/POST/PUT/DELETE 的标准写法,建议按场景直接套用。
常见原因:DNS 解析慢、服务器响应慢、或网络丢包。curl 默认不设超时,会一直等待。本工具在「高级选项」示例里包含 --connect-timeout(连接超时)和 --max-time(总超时)参数,建议设为 10-30 秒。如果请求大文件,加 --limit-rate 限制带宽。用 -w '%{time_total}' 可查看实际耗时。
curl 默认支持 HTTPS,但遇到自签名或过期证书时会报错。如果测试环境不要求证书验证,加 -k 或 --insecure 跳过校验(生产环境勿用)。本工具在「跳过证书验证」示例中给出了 -k 的用法。如果需要指定 CA 证书,用 --cacert /path/to/cert.pem。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。