MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/8d22564490d8

Fetch 基本概念

草案
本页尚未完工.

Fetch 是一个现代的概念, 等同于 XMLHttpRequest。它提供了许多与XMLHttpRequest相同的功能,但被设计成更具可扩展性和高效性。本文介绍了 Fetch API的一些基本概念。

Note: 这篇文章可能还需要修改。如果你觉得有的概念可以解释的更好,可以告知 dev-mdc,或 Mozilla IRC (#mdn room)。

简而言之

Fetch 的核心在于对 HTTP 接口的抽象,包括 RequestResponseHeadersBody,以及用于初始化异步请求的 global fetch。得益于 JavaScript 实现的这些抽象好的 HTTP 模块,其他接口能够很方便的使用这些功能。

Service Workers 是一个利用了 Fetch 实现的接口的例子。

除此之外,Fetch 还利用到了请求的异步特性——它是基于 Promise 的。

Guard

Guard 是 Headers 对象的特性,基于不同的情况,它可以有以下取值:immutable、requestrequest-no-corsresponse 或 none。

当使用 Headers() constructor 创建一个新的 Headers 对象的时候,它的 guard 被设置成 none(默认值)。当创建 Request 或 Response 对象的时候,它将拥有一个按照以下规则实现的与之关联的 Headers 对象:

新对象的类型 创建时的构造函数 关联的 Headers 对象的 guard
Request Request() request
Request()mode 设置成 no-cors request-no-cors
Response Response() response
error()redirect() 方法 immutable

头信息的 guard 会影响 set()delete() 和 append() 方法。如果你试图修改 guard 是 immutable 的 Headers 对象,那么会抛出一个 TypeError。以下情况则不会抛出错误:

文档标签和贡献者

 此页面的贡献者: xgqfrms-GitHub, Jeff-Kook, xcatliu, ziyunfei
 最后编辑者: xgqfrms-GitHub,