HTTP 302 Found

临时重定向:资源目前位于别处,但原 URL 仍是真正的地址。

HTTP 302 是什么意思

HTTP 302 Found 告诉客户端从 Location 头中的 URL 获取资源,但仅限这一次——原 URL 仍然是规范地址,以后应继续请求原 URL。

历史上,浏览器在跟随 302 时会将 POST 改为 GET,这与规范相悖。HTTP 后来新增了 307 Temporary Redirect 以保证方法被保留;302 仍是简单 GET 重定向的常规默认选择。

302 响应的常见原因

  • 页面暂时从另一个位置提供服务(维护、A/B 测试、活动落地页)。
  • 登录后或结账后的流程重定向浏览器(POST-redirect-GET 模式,严格来说此时 303 才是精确的选择)。
  • 按地理位置或语言变化、因访客而异的重定向。
  • 一个本应“永久”的迁移被错误地配置为 302,并持续了数年。

开发者的最佳实践

  • 如果迁移实际上是永久性的,应切换为 301/308——长期存在的 302 会向搜索引擎发出混乱的信号。
  • 当请求方法和请求体必须保留时使用 307,当需要在 POST 之后强制使用 GET 时使用 303。
  • 除非添加了明确的 Cache-Control 头,否则不要缓存 302 响应。

示例响应

HTTP/1.1 302 Found
Location: https://example.com/summer-sale/
Cache-Control: no-store

SEO 影响

搜索引擎在看到 302 时会保留对原 URL 的索引,因为该迁移被声明为临时性质。如果一个 302 保持数月不变,Google 通常会将其当作事实上的 301 处理,但明确表达意图更好:请选择与你的意图相符的状态码。

常见问题

302 重定向会损害 SEO 吗?

在用于真正临时的迁移时不会。问题出现在把永久迁移当作 302 处理时,这会延迟信号向新 URL 的转移。

302 和 307 有什么区别?

307 保证跟随重定向时 HTTP 方法被保留。302 在实践中会让浏览器把 POST 转换为 GET。

什么时候应该使用 303 See Other?

在处理完 POST 后,用 GET 将浏览器导向结果页——这就是经典的 POST-redirect-GET 模式。