位于 WorkerOrGlobalScope
这一个 mixin 中的 **fetch()
**方法用于发起获取资源的请求。它返回一个 promise,这个 promise 会在请求响应后被 resolve,并传回 Response
对象。
[Window
] 和 [WorkerGlobalScope
]都实现了 WorkerOrGlobalScope。 ——这意味着基本在任何场景下只要你想获取资源,都可以使用 位于 WorkerOrGlobalScope 中的 fetch()
方法
当遇到网络错误时,[fetch()
]返回的 promise 会被 reject,并传回 [TypeError
],虽然这也可能因为权限或其它问题导致。成功的 fetch() 检查不仅要包括 promise 被 resolve,还要包括 [Response.ok
]属性为 true。HTTP 404 状态并不被认为是网络错误。
fetch()
方法由 [Content Security Policy]的 connect-src
指令控制,而不是它请求的资源
注意: fetch() 方法的参数与 Request()构造器是一样的
# 参数 #
## input :
定义要获取的资源:
1: 一个 USVString 字符串,包含要获取资源的URL.一些浏览器会接受bolb:和data:作为schemes.
2:一个Request对象
## inint【可选】
一个配置项对象,包括所有对请求的设置。可选参数有:
1:method : 请求使用的方法,如 GET、POST。
2:headers: 请求的头信息,形式为 [`Headers`] 的对象或包含 [`ByteString`] 值的对象字面量。
3:body: 请求的 body 信息:可能是一个 [`Blob`]、[`BufferSource`]、[`FormData`]、[`URLSearchParams`]
或者 [`USVString`] 对象。注意 GET 或 HEAD 方法的请求不能包含 body 信息。
4:mode: 请求的模式,如 cors、 no-cors 或者 same-origin。
5:credentials: 请求的 credentials,如 `omit、``same-origin 或者` `include。为了在当前域名内自动发送 cookie ,
必须提供这个选项, 从 Chrome 50 开始, 这个属性也可以接受` [`FederatedCredential`] 实例或是
一个 [`PasswordCredential`] 实例。
6:cache : 请求的 cache 模式: default 、 no-store 、reload 、no-cache 、force-cache 或者 only-if-cached 。
7:redirect: 可用的 redirect 模式: follow (自动重定向), error (如果产生重定向将自动终止并且抛出一个错误),
或者 manual (手动处理重定向). 在Chrome中,Chrome 47之前的默认值是 follow,从 Chrome 47开始是 manual。
8:referrer: 一个 [`USVString`] 可以是 `no-referrer、``client`或一个 URL。默认是 `client。`
9:referrerPolicy : Specifies the value of the referer HTTP header. May be one of no-referrer、
no-referrer-when-downgrade、 origin、 origin-when-cross-origin、 unsafe-url 。
10:integrity: 包括请求的 [subresource integrity]值 ( 如: `sha256BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=)。`
# 返回值 #
一个 [`Promise`],resolve 时回传 [`Response`]对象。
# 示例
fetch(location.herf, {
method: "get"
}).then(function(response) {
return response.text()
}).then(function(body) {
console.log(body)
})
网友评论