Fetch basic concepts - Web APIs 编辑
Draft
This page is not complete.
The Fetch API provides an interface for fetching resources (including across the network). It will seem familiar to anyone who has used XMLHttpRequest
, but it provides a more powerful and flexible feature set. This article explains some of the basic concepts of the Fetch API.
Note: This article will be added to over time. If you find a Fetch concept that you feel needs explaining better, let someone know on the MDN discussion forum, or MDN Web Docs room on Matrix.
In a nutshell
At the heart of Fetch are the Interface abstractions of HTTP Request
s, Response
s, Headers
, and Body
payloads, along with a global fetch
method for initiating asynchronous resource requests. Because the main components of HTTP are abstracted as JavaScript objects, it is easy for other APIs to make use of such functionality.
Service Workers is an example of an API that makes heavy use of Fetch.
Fetch takes the asynchronous nature of such requests one step further. The API is completely Promise
-based.
Guard
Guard is a feature of Headers
objects, with possible values of immutable
, request
, request-no-cors
, response
, or none
, depending on where the header is used.
When a new Headers
object is created using the Headers()
constructor, its guard is set to none
(the default). When a Request
or Response
object is created, it has an associated Headers
object whose guard is set as summarized below:
new object's type | creating constructor | guard setting of associated Headers object |
---|---|---|
Request | Request() | request |
Request() with mode of no-cors | request-no-cors | |
Response | Response() | response |
error() or redirect() methods | immutable |
A header's guard affects the set()
, delete()
, and append()
methods which change the header's contents. A TypeError
is thrown if you try to modify a Headers
object whose guard is immutable
. However, the operation will work if
- guard is
request
and the header name isn't a forbidden header name . - guard is
request-no-cors
and the header name/value is a simple header . - guard is
response
and the header name isn't a forbidden response header name .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论