This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Глобальная функция fetch()
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since март 2017 г..
* Some parts of this feature may have varying levels of support.
Примечание: Эта возможность доступна вWeb Workers.
Глобальный методfetch() запускает процесс извлечения ресурса из сети. Возвращает promise, содержащийResponse объект (ответ на запрос).
Промисfetch() завершаетсяTypeError, если возникает сетевая ошибка, хотя обычно это означает проблему с доступами или аналогичную ей. Для успешного завершенияfetch() достаточно удостовериться в том, что промис выполнен и что свойствоResponse.ok имеет значениеtrue. HTTP статус 404 не является сетевой ошибкой.
Методfetch() контролируется директивойconnect-src directive ofContent Security Policy (политика безопасности контента), а не директивой ресурсов, которые извлекает.
Примечание:Аргументы методаfetch() идентичны аргументамRequest() конструктора.
In this article
Синтаксис
Promise<Response> fetch(input[, init]);
Аргументы
- input
Определяет желаемый для получения ресурс. Это может быть:
- initНеобязательный
Объект с опциями, содержащий пользовательские настройки, которые вы желаете применить к запросу. Возможные варианты:
method: Метод запроса, например,GET,POST.headers: Заголовки, содержащиеся в объектеHeadersили в объекте литерале с побитовыми значениями (ByteString).body: Тело запроса, которое может быть:Blob,BufferSource,FormData,URLSearchParams, илиUSVStringобъектами. Обратите внимание, чтоGETилиHEADзапрос не может иметь тела.mode: Режим, например,cors,no-corsилиsame-origin.credentials: Полномочия:omit,same-originилиinclude. Для автоматической отправки куки для текущего домена, эта опция должна быть указана. Начиная с Chrome 50, это свойство также принимает экземпляр классаFederatedCredentialилиPasswordCredential.cache: Режим кеширования запросаdefault,no-store,reload,no-cache,force-cacheилиonly-if-cached.redirect: Режим редиректа:follow(автоматически переадресовывать),error(прерывать перенаправление ошибкой) илиmanual(управлять перенаправлениями вручную). В Chrome по дефолту стоитfollow(ранее, в Chrome 47, стоялоmanual).referrer:USVString, определяющаяno-referrer,clientили a URL. Дефолтное значение -client.referrerPolicy: Определяет значение HTTP заголовка реферера. Может быть:no-referrer,no-referrer-when-downgrade,origin,origin-when-cross-origin,unsafe-url.integrity: Содержит значение целостности субресурсов (subresource integrity) запроса (например,sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=).keepalive: Эта опция может быть использована, чтобы разрешить запросу "пережить" страницу. Получение ресурсов с флагомkeepalive- это альтернативаNavigator.sendBeacon()API.signal: Экземпляр объектаAbortSignal; позволяет коммуницировать с fetch запросом и, если нужно, отменять его с помощьюAbortController.
Возвращаемое значение
Исключения
| Тип | Описание |
|---|---|
AbortError | Запрос был отменён (используяAbortController.abort()). |
TypeError | Начиная с версииFirefox 43,fetch() завершится ошибкойTypeError, если URL имеет такие полномочия, какhttp://user:password@example.com. |
Пример
В нашемFetch Request примере (см.Fetch Request live) мы создаём новый объектRequest (запроса), используя релевантный конструктор, а затем получаем его вызовомfetch(). Так как запрашиваемый ресурс - изображение, для того, чтобы присвоить ему подходящий MIME тип и обработать должным образом, мы применяем к ответу методBody.blob(), после чего создаём для него Object URL и передаём её в элемент<img>.
var myImage = document.querySelector("img");var myRequest = new Request("flowers.jpg");fetch(myRequest) .then(function (response) { return response.blob(); }) .then(function (response) { var objectURL = URL.createObjectURL(response); myImage.src = objectURL; });В нашемFetch with init then Request примере (см.Fetch Request init live) мы делаем тоже самое, за исключением того, что передаём в качестве аргумента дляfetch() объект init:
var myImage = document.querySelector('img');var myHeaders = new Headers();myHeaders.append('Content-Type', 'image/jpeg');var myInit = { method: 'GET', headers: myHeaders, mode: 'cors', cache: 'default' };var myRequest = new Request('flowers.jpg');fetch(myRequest,myInit).then(function(response) { ...});Обратите внимание, что объект init в качестве аргумента можно передать и в конструкторRequest для получения аналогичного результата, например:
var myRequest = new Request("flowers.jpg", myInit);Допустимо использования объекта литерала в качествеheaders вinit.
var myInit = { method: "GET", headers: { "Content-Type": "image/jpeg", }, mode: "cors", cache: "default",};var myRequest = new Request("flowers.jpg", myInit);Спецификации
| Specification |
|---|
| Fetch> # fetch-method> |