Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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。以下情况则不会抛出错误:

文档标签和贡献者

 此页面的贡献者: xcatliu, ziyunfei
 最后编辑者: xcatliu,