TrueURL
TrueURL

菜单

307 临时重定向

307 临时重定向:必须用相同的方法和请求体向 Location 中的 URL 重新发送请求,而 302 可能会把 POST 改为 GET。

原因短语
Temporary Redirect
是否重定向
是
默认可缓存
否

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 与重定向检测

Google 对 307 的处理与 302 相同:视为临时重定向和较弱的规范信号,因此原始 URL 通常会保留在索引中。这适合临时情况;永久迁移应使用 308 或 301。有些框架默认生成 307,例如 Next.js 对 permanent: false 的重定向使用 307,对 permanent: true 使用 308,因此要检查自己的配置生成的是哪一个。

常见原因与使用场景

  • API 或上传端点临时迁移,且 POST 请求体必须在重定向后保留。
  • 维护、负载均衡或按地区路由,在一段时间内把请求转发到别处。
  • 框架默认的临时重定向,例如 Next.js 中的 permanent: false,或 Starlette 和 FastAPI 中的 RedirectResponse。
  • 浏览器开发者工具中因 HSTS 显示的“307 Internal Redirect”,它来自浏览器,而不是服务器。

301 重定向检测

使用免费的 TrueURL 重定向检测工具,逐跳查看一个 URL 返回的每一个状态码。