响应:重定向属性

只读 redirected 属性 Response 接口指示响应是否为重定向请求的结果。

注意:依赖于 redirected 过滤重定向使得伪造的重定向可以轻松地阻止您的内容按预期工作。相反,您应该在调用 fetch() 时进行过滤。请参见示例 禁止重定向,其中显示了如何执行此操作。

如果响应表明您的请求被重定向,则为 true 的布尔值。

示例

检测重定向

检查响应是否来自重定向请求与检查 Response 对象上的此标志一样简单。在下面的代码中,在 fetch 操作期间发生重定向时,文本消息会被插入到元素中。但是,请注意,这不像直接拒绝重定向(如下面 禁止重定向 中所述)那样安全。

The url 属性返回重定向后的最终 URL。

js
fetch("awesome-picture.jpg")
  .then((response) => {
    const elem = document.getElementById("warning-message-box");
    elem.textContent = response.redirected ? "Unexpected redirect" : "";
    // final url obtained after redirects
    console.log(response.url);
    return response.blob();
  })
  .then((imageBlob) => {
    const imgObjectURL = URL.createObjectURL(imageBlob);
    document.getElementById("img-element-id").src = imgObjectURL;
  });

禁止重定向

由于使用 redirected 手动过滤重定向可能会允许伪造重定向,因此您应该在调用 fetch() 时将重定向模式设置为 "error",如下所示

js
fetch("awesome-picture.jpg", { redirect: "error" })
  .then((response) => response.blob())
  .then((imageBlob) => {
    const imgObjectURL = URL.createObjectURL(imageBlob);
    document.getElementById("img-element-id").src = imgObjectURL;
  });

规范

规范
Fetch 标准
# ref-for-dom-response-redirected①

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅