当前位置: 首页 > 知识库问答 >
问题:

获取API-重定向有什么用:手动

后阳炎
2023-03-14

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

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

不透明重定向过滤响应是一种过滤响应,其类型为“opaquereDirect”,状态为0,状态消息为空字节序列,标头列表为空,正文为空,尾部为空。

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

打开请求的重定向模式:

-手动

规范还说:

换句话说,不透明的过滤响应和不透明的重定向过滤响应几乎无法与网络错误区分开来。

鉴于所有这些,为什么在使用Fetch API时会有一组重定向到手动?对我来说,这似乎很没用。是否有有用的用例?

共有1个答案

晋安国
2023-03-14

简短的回答是:除非你正在用服务工作者代码做一些事情,比如 https://github.com/whatwg/fetch/issues/66 所涵盖的内容,否则你永远不要重定向:“手动”。

更长的答案:

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

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

该规范曾经要求,即使您可以使用< code>redirect: 'manual'调用API,如果您这样做,浏览器也会抛出——因为当时除了浏览器进行导航之外,没有人提供任何有效的理由来设置它。

但是由于https://github.com/whatwg/fetch/issues/66,这种行为发生了变化,这提供了一种(角落)情况,即服务工作者代码中需要重定向:“手册”。

您可以在Fetch API中设置但在Web应用程序代码中几乎没有实用性的类似情况是mode:'no-cors'。最初添加它只是因为浏览器将其用于某些请求,因此Fetch API会暴露它。但这是另一种仅对服务工作者的实用性有限的情况——用于缓存响应以稍后按原样服务,而无需检查响应(mode:'no-cors'可防止Web应用程序代码这样做)。

 类似资料:
  • 我有一个页面“/order/new”,它包括两个客户及其地址的下拉菜单和一个重定向选择要添加到订单中的产品的按钮,我在一个数组中获得产品,并将该数组传递给“/order/new”。但是当我重定向时,我没有获得选定的客户及其地址。我将按顺序添加的产品保存在全局数组hh中,它从ajax获得数据 我想在添加产品数组后获取客户及其地址 我的ajax代码: “/new/order”得我得ejs:

  • 问题内容: 什么是重定向的区别使用输出,,和? 问题答案: 将 标准输出 重定向到文件 将文件句柄“ 2”(几乎总是 stderr )重定向到其他文件句柄(通常写为,这会将stderr重定向到与stdout相同的位置)。 并将 stdout* 和 stderr都重定向到文件。通常写为(或)。在功能上与相同。 *** 将输出重定向到文件句柄2(通常是 stderr )到文件。

  • 问题内容: 我正在使用访问管理(AM)服务器创建社交登录页面。当用户单击登录按钮时,我将对AM服务器进行一次http调用。AM服务器生成带有身份验证cookie的HTTP 301重定向响应到社交登录页面。我需要以某种方式遵循此重定向响应,并在Web浏览器中显示新内容。 用户界面:ReactJS 请求: 响应 反应代码: 如何跟踪重定向响应并在Web浏览器中显示新内容? 问题答案: Request.

  • 我正在使用Java,我想向URL发送请求,然后获取重定向到的URL。 我想解决方案,如果它包括使用HttpClient和请求,因为我已经使用了过去。

  • 问题内容: 在Python中,我使用urllib2打开一个URL。该URL重定向到另一个URL,该URL重定向到另一个URL。 我希望在每次重定向后打印出网址。 例如 -> =重定向到 A-> B-> C-> D 我想打印B,C和D的URL(A是已知的,因为它是起始URL)。 问题答案: 最好的方法可能是继承。深入Python的重定向一章可能会有所帮助。

  • 有人能给我解释一下如何在Spring WebFlux和Thymeleaf中实现后重定向get模式吗?什么订阅了数据库保存方法?