redirect 参数是 Fetch API 中客户端配置项,取值为 follow(默认)、error(显式设置时 Promise 拒绝)或 manual(可读取 Location 头但状态码为 0)。

识别 redirect 参数的关键,在于明确它属于客户端发起请求时的配置项,而非服务器返回的响应内容。它只在前端发起 HTTP 请求(如 Fetch 或某些封装库)时由开发者显式设置,用于决定浏览器或请求库如何应对服务器返回的 302(或其它 3xx)响应。
redirect 参数的三种取值及识别方式
该参数是 Fetch API 的 init 配置对象中的一个字段,取值只能是字符串:follow、error 或 manual。每种模式对应不同响应处理逻辑,可通过检查代码中 fetch(url, { redirect: 'xxx' }) 的赋值直接识别:
-
follow:默认值,无需显式写出。若请求代码中没写
redirect字段,即为该模式——浏览器自动跳转,你收不到中间的 302 响应体。 -
error:显式传入
redirect: 'error'。此时只要服务器返回任意 3xx 状态码,Promise 就会 reject,错误类型为TypeError,可据此在catch中捕获识别。 -
manual:显式传入
redirect: 'manual'。这是唯一能让你拿到 302 响应对象的模式。响应的type属性为"opaqueredirect",且status是 0(不是 302),但headers.get('Location')仍可读取跳转地址。
不靠代码也能判断当前是否处于 manual 模式
在浏览器开发者工具的 Network 面板中,若看到某次 fetch 请求的响应状态显示为 (blocked) 或 —(横线),响应头里却有 Location 字段,同时响应体为空,基本可确认使用了 manual 模式。这是因为该模式下浏览器不自动跳转,也不暴露真实状态码,仅提供有限信息供脚本手动处理。
注意 redirect 参数和服务器 302 响应的区别
redirect 是前端控制开关,而 302 是服务器发出的状态指令。二者不在同一层:
- 服务器返回 302,只是“通知搬家”;
-
redirect: 'follow'是你让浏览器“照着纸条自己走过去”; -
redirect: 'manual'是你选择“先看纸条,再决定怎么走”。
所以识别 redirect 参数,本质是看前端代码怎么调用请求,而不是分析服务器日志或响应头里有没有它。











