使用 -L 参数可让 curl 自动跟随 302 重定向,例如 curl -L http://example.com;结合 -v 可查看跳转过程,必要时添加认证或 cookie 相关参数,并可通过 –max-redirs 限制跳转次数。

当使用 linux 的 curl 请求一个 URL 时,如果服务器返回 302 Found 重定向状态码,默认情况下 curl 不会自动跳转到新的地址。这会导致你只能看到重定向响应本身,而拿不到最终目标页面的内容。要解决这个问题,需要让 curl 自动跟随重定向。
使用 -L 参数启用重定向
curl 提供了 -L 或 –location 参数,用于告诉 curl 自动跟随 302、301 等重定向响应。
示例:
如果你原来的命令是:
curl http://example.com
而该地址返回 302,你应该加上 -L:
curl -L http://example.com
这样 curl 会自动请求 Location 响应头中指定的新 URL,并返回最终内容。
查看重定向过程(可选)
如果你想观察整个重定向链,可以加上 -v(verbose)参数:
curl -Lv http://example.com
你会看到每一步的请求和响应,包括每次跳转的 URL。
处理认证或 Cookie 场景
某些重定向后需要携带 Cookie 或认证信息,否则无法访问最终页面。此时可以结合以下参数:
- -b cookie.txt:携带 Cookie
- -u user:pass:提供用户名密码(适用于 HTTP Basic Auth)
- -H “Authorization: Bearer xxx”:手动添加认证头
例如:
curl -L -H "Authorization: Bearer token123" https://api.example.com/redirect
限制重定向次数
为防止无限重定向循环,可以使用 –max-redirs 设置最大跳转次数:
curl -L --max-redirs 5 http://example.com
设置为 0 表示不限制,但一般建议保留默认值或设为合理数值(如 10)。
基本上就这些。只要加上 -L,绝大多数 302 不跳转的问题都能解决。关键是理解:curl 默认不跳转是设计行为,不是错误。开启跟随重定向即可正常获取目标资源。