307 Temporary Redirect
是一种 HTTP 状态码,表示:
服务器临时要求客户端使用另一个 URL 来完成当前请求。请求方法(如 POST/GET)不会改变。
一、307 的含义
状态码 | 含义 |
---|---|
307 | 临时重定向:客户端应重新向 Location 指定的 URL 发送请求,使用相同的请求方法(比如 POST 不会被变成 GET) |
区别于:
302
:也表示临时跳转,但有些客户端可能会将 POST 改为 GET308 Permanent Redirect
:永久重定向
二、常见场景与排查方向
场景 | 原因 | 排查方法 |
---|---|---|
1. HTTPS 强制跳转 | 有些服务器会把 HTTP 重定向到 HTTPS,返回 307 | 查看是否访问了 http:// 而不是 https:// |
2. 对象存储服务(如 OSS、S3) | 区域错误、bucket URL 错误,服务返回临时跳转 | 检查你访问的 endpoint 或签名 URL 是否正确 |
3. API 网关或反向代理配置 | 配置了临时跳转规则 | 查看 Nginx、API 网关或 Kong 配置 |
4. 签名 URL 有效期校验失败(云服务) | URL 临时授权过期或签名无效 | 检查签名计算与时间戳 |
三、如何排查?
1. 使用 curl -v
看响应头
curl -v https://example.com/api/xxx
重点看响应头的:
HTTP/1.1 307 Temporary Redirect
Location: https://new-url.example.com/path
表示你原始请求被“临时跳转”到了
Location
中的地址。
2. 若你用的是代码发起请求(如 Python、Java)
- 确保你允许跟随重定向
- 查看新地址(
Location
)是否符合预期
示例:阿里云 OSS 返回 307 错误
错误原因可能是:
- 使用了错误的 endpoint(如你实际存储在
oss-cn-beijing
,你却访问oss-cn-shanghai
) - 请求的 Bucket 本身被强制临时重定向(如为加速域名服务)
四、如何修复?
原因 | 解决方案 |
---|---|
请求地址错误 | 检查是否使用了错误的 Host / URL |
强制跳转为 HTTPS | 使用 https:// 请求地址 |
云服务区域错误 | 检查是否访问了正确的 Region 或 Endpoint |
使用 SDK 时报错 | 更新 SDK,开启 follow_redirects 配置 |
自建服务配置问题 | 查看 Nginx、Apache 等的 rewrite 或 proxy_pass 配置 |
如你方便,请贴出:
- 原始请求 URL
curl -v
输出(或代码报错信息)- 使用的是哪个服务(例如阿里云 OSS、API 网关、自建接口)
我可以帮你快速定位问题。