gpt4 book ai didi

javascript - Fetch API - 重定向有什么用 : manual

转载 作者:行者123 更新时间:2023-12-03 01:01:23 27 4
gpt4 key购买 nike

我最近一直在使用 Javascript Fetch API。据我了解,默认情况下所有重定向都是透明处理的,最后我从重定向链中的最后一个调用中得到了响应。

但是,我可以使用 {redirect: 'manual'} 调用 fetch,在这种情况下,它将返回不透明的redirect 响应,而没有可用的信息。来自 https://fetch.spec.whatwg.org/#concept-filtered-response-opaque-redirect

An opaque-redirect filtered response is a filtered response whose type is "opaqueredirect", status is 0, status message is the empty byte sequence, header list is empty, body is null, and trailer is empty.

https://fetch.spec.whatwg.org/#http-fetch表示如果重定向设置为“手动”,则响应将变为不透明重定向:

Switch on request’s redirect mode:
...
- manual
    Set response to an opaque-redirect filtered response whose internal response is actualResponse.

规范还说:

In other words, an opaque filtered response and an opaque-redirect filtered response are nearly indistinguishable from a network error.

鉴于这一切,为什么在使用 Fetch API 时将重定向设置为手动?对我来说这似乎没什么用。是否存在有用的用例?

最佳答案

简短的回答是:除非您正在使用服务工作人员代码执行某些操作,例如 https://github.com/whatwg/fetch/issues/66覆盖,你永远不会想要redirect: 'manual'

更长的答案:

HTML spec requires当浏览器开始导航到资源时,浏览器首先将重定向模式设置为手动。这是手动重定向模式在任何规范中的唯一用途。

但是,由于 Fetch API 本质上公开了浏览器内部用于提取的相同原语,因此它公开了手动重定向模式。然而,仅仅因为 API 公开了特定的原语并不意味着该原语在前端代码中有很好的用途。

规范过去要求,即使您可以使用redirect: 'manual'调用 API,如果您这样做,浏览器也会抛出异常 - 因为当时还没有人这样做提供了针对除浏览器进行导航之外的任何情况进行设置的任何有效理由。

但是由于https://github.com/whatwg/fetch/issues/66,这种行为发生了变化,它给出了一个( Angular )情况,其中服务工作线程代码中需要 redirect: 'manual'

类似的情况是 mode: 'no-cors',您可以在 Fetch API 中设置,但在 Web 应用程序代码中几乎没有什么用处。最初添加它只是因为浏览器将它用于某些请求,因此 Fetch API 公开了它。但这是另一种情况,仅对服务 worker 来说效用有限——缓存响应以便稍后按原样返回,而无需检查响应(其中 mode: 'no-cors' 会阻止 Web 应用程序代码)。

关于javascript - Fetch API - 重定向有什么用 : manual,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42716082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com