307 Temporary Redirect 表示目标资源暂时位于 Location 响应头中的 URL,客户端跟随重定向时不得改变请求方法:POST 仍是带有相同请求体的 POST,PUT 仍是 PUT。今后的请求仍应发往原始 URL。307 默认不可缓存。
HTTP/1.1 增加 307,是为了消除 302 Found 的歧义:浏览器在 POST 之后会用 GET 跟随 302。对 API 端点、文件上传和表单提交进行临时重定向时,或者在任何必须保留请求方法的场景中,都应使用 307。
在一个使用 HSTS 的网站上输入 http:// 地址后,浏览器开发者工具中可能会显示 307 Internal Redirect。这个重定向是浏览器根据自己的 HSTS 列表生成的,请求根本没有到达服务器;服务器自身的重定向很可能是 301。TrueURL 的 HTTPS 重定向检测等服务器端检测可以显示服务器实际发送的内容。
响应示例
HTTP
HTTP/1.1 307 Temporary Redirect
Date: Fri, 06 Nov 2026 10:15:32 GMT
Location: https://eu.api.example.com/v1/upload
Cache-Control: no-store
Content-Length: 0 SEO 与重定向检测
常见原因与使用场景
- API 或上传端点临时迁移,且
POST请求体必须在重定向后保留。 - 维护、负载均衡或按地区路由,在一段时间内把请求转发到别处。
- 框架默认的临时重定向,例如 Next.js 中的
permanent: false,或 Starlette 和 FastAPI 中的RedirectResponse。 - 浏览器开发者工具中因 HSTS 显示的“307 Internal Redirect”,它来自浏览器,而不是服务器。