3xx 状态码是一类响应,表示 HTTP 客户端必须采取其他操作才能获取完整的所请求资源。
重定向位置应按以下方式之一指定:
- 在响应的
Location标头字段中,适用于自动重定向。 - 在响应的 payload 中,可选地包含指向正确位置的超链接。
300 Multiple Choices 状态表示所请求资源有多个可用选项,客户端可以选择其中一个。
更多信息请参阅 RFC 7231 ↗。
该状态通常在资源有多种表示形式或格式时使用。例如:
响应可能包含指向首选选项的 Location 标头,或提供带有可用选项超链接的 payload,以便客户端做出决定。
Cloudflare 通常会绕过 300 Multiple Choices 响应进行自动重定向,以确保最佳性能与用户体验。
301 Moved Permanently 状态表示所请求的资源已被分配新的永久 URI。今后对该资源的所有引用应使用所附 URI 之一。
更多信息请参阅 RFC 7231 ↗。
该状态常用于告知客户端:
- 资源已永久迁移到新 URI。
- 搜索引擎应更新其索引以反映新 URI。
- 书签或其他已保存引用应更新。
响应通常包含指定新 URI 的 Location 标头。这使大多数 User-Agent 能够自动重定向。
Cloudflare 无需查询源站即可生成 301 Moved Permanently 响应。更多信息请参阅 Redirect Rules。
302 Found 状态也称为临时重定向,表示所请求的资源暂时位于不同 URI。与表示永久迁移的 301 Moved Permanently 状态不同,302 Found 状态专门用于临时场景。
虽然 User-Agent 可以遵循 Location 标头以检索资源,但不应像 301 Moved Permanently 那样替换当前 URI。
更多信息请参阅 RFC 7231 ↗。
该状态通常用于:
- 在维护或升级期间临时重定向流量。
- 在不更改已保存引用的情况下,将用户引导至备用资源。
- 在不进行永久更改的情况下,对资源的不同版本进行 A/B 测试。
Cloudflare 可以生成这些响应,从而无需向源站发送请求。了解 Cloudflare 如何借助 Redirect Rules 帮助生成重定向。
303 See Other 状态表示客户端应使用 GET 请求从不同 URI 检索资源。与 301 Moved Permanently 重定向不同,重定向位置上的资源不一定等同于最初请求的资源。
更多信息请参阅 RFC 7231 ↗。
303 状态通常用于响应 POST 或 DELETE 请求,表示源站已成功处理数据,并支持正确的缓存行为。
虽然初始 303 响应本身不可缓存,但后续 GET 请求的响应可以缓存,因为它绑定到不同的 URI。
Cloudflare 允许通过 Redirect Rules 配置 303 重定向,从而直接在边缘无缝处理这些响应。这种方法通过避免对源站的不必要请求来提升性能。
304 Not Modified 状态表示所请求的资源在客户端缓存中可用且有效。这意味着自客户端上次请求以来,源站未修改该资源,因此客户端无需再次连接源站即可使用缓存资源。接收 304 响应的缓存要求定义于 RFC 7234 第 4.3.4 节 ↗。
更多信息请参阅 RFC 7232 ↗。
当客户端发送条件 GET 或 HEAD 请求以验证缓存资源时,会使用 304 Not Modified 响应。服务器确认缓存版本仍然最新,使客户端无需重新下载即可使用该资源。这有助于减少不必要的数据传输并提高效率。
304 响应包含:
- 无消息正文:304 响应本身不包含实际资源(如图片或网页内容)。它只是确认缓存版本有效。
- 必需标头:响应包含重要元数据(例如
Cache-Control、Content-Location、Date、ETag、Expires或Vary),用于告知客户端如何管理缓存资源。这些标头与资源以 200 OK 响应发送时附带的标头相同。
当过期请求必须在源站重新验证时,Cloudflare 会发送 304 响应,确认缓存版本与源站版本匹配。响应包含 CF-Cache-Status: REVALIDATED 标头,Cloudflare 使用 If-Modified-Since 标头验证版本。更多信息请参阅 ETag Headers。
该状态码表示请求必须通过 Location 标头中指定的代理路由,而不能直接发送到源站。然而,由于安全顾虑,305 Use Proxy 状态码已被弃用。
该状态码表示后续请求应通过指定代理发送。然而,306 Switch Proxy 状态码已弃用,不再使用。
307 Temporary Redirect 状态表示所请求的资源已临时移动到 Location 标头中指定的不同 URI。与 302 重定向不同,在自动跟随重定向时,原始请求方法(例如 GET 或 POST)必须保持不变。这可确保资源位置的临时更改不会破坏请求的预期行为。User-Agent 可以使用 Location 标头自动跟随重定向,但不应为将来的请求替换原始 URI。
更多信息请参阅 RFC 7231 ↗。
307 状态适用于在服务器维护或升级期间临时迁移资源,同时确保保留原始请求方法。它也常用于将流量引导至促销、活动或特别活动的临时 URL,而不更改将来请求所使用的原始 URI。
Cloudflare 可高效处理 307 Temporary Redirect 响应,实现临时重定向而无需在源站进行更改。可使用 Redirect Rules 进行配置。
308 Permanent Redirect 状态表示所请求的资源已永久移动到 Location 标头中指定的新 URI。与 301 重定向不同,在自动跟随重定向时,原始请求方法(例如 GET、POST)必须保持不变。User-Agent 应使用 Location 标头跟随重定向,并将原始 URI 替换为新 URI,以用于后续请求。
更多信息请参阅 RFC 7538 ↗。
308 Permanent Redirect 状态常用于资源永久迁移、API 版本升级、域名或路径迁移,以及在重定向中保持方法完整性。此外,它通过将链接权重(link equity)转移到新 URI 来帮助 SEO。
Cloudflare 可高效处理 308 Permanent Redirect,在保持请求完整性的同时完成重定向。可使用 Redirect Rules 配置这些重定向。