WorkerGlobalScope:fetch() 方法

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Some parts of this feature may have varying levels of support.

WorkerGlobalScope 接口的 fetch() 方法用于发起获取资源的请求,它会返回一个会在请求响应后兑现的 promise。

该 promise 会兑现一个表示请求响应的 Response 对象。

当请求失败(例如,因为请求 URL 的格式错误或网络错误)时,fetch() 的 promise 才会被拒绝。fetch() 的 promise 不会因为服务器响应表示错误的 HTTP 状态码(404504,等)而被拒绝。因此,then() 处理器必须检查 Response.ok 和/或 Response.status 属性。

fetch() 方法由内容安全策略connect-src 指令(而不是它查询的资源的指令)控制。

备注: fetch() 方法的参数与 Request() 构造函数是一样的。

语法

js
fetch(resource)
fetch(resource, options)

参数

resource

定义你想要获取的资源。可以是:

  • 一个字符串或任何其他具有字符串化器的对象(包括 URL 对象),提供你想要获取的资源的 URL。URL 可以是相对于基础 URL 的,基础 URL 是窗口上下文中文档的 baseURI 或者 worker 上下文中的 WorkerGlobalScope.location
  • 一个 Request 对象。
options 可选

一个包含你想要应用到请求上的任何自定义设置的 RequestInit 对象。

返回值

一个 Promise,会兑现 Response 对象。

异常

AbortError DOMException

请求被 AbortControllerabort() 方法调用所终止。

NotAllowedError DOMException

如果 Topics API 的使用被 browsing-topics 权限策略明确禁止,且 fetch() 请求中包含 browsingTopics: true,则会抛出此异常。

TypeError

当获取操作无法执行时抛出的错误。请参阅 Window.fetch() 的异常,以了解可能导致此错误的原因。

示例

参见 fetch() 以获取示例。

规范

Specification
Fetch
# fetch-method

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
fetch
Authorization header removed from cross-origin redirects
Support for blob: and data:
Send ReadableStream in body
Experimental
init.attributionReporting parameter
Experimental
init.browsingTopics parameter
ExperimentalNon-standard
init.duplex parameter
Experimental
init.keepalive parameter
init.priority parameter
init.referrerPolicy parameter
init.signal parameter

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
See implementation notes.
Has more compatibility info.

参见