Spec-Zone.ru › Web APIs

RequestInit

Словарь RequestInit API Fetch представляет набор опций, которые можно использовать для настройки запроса fetch.

Вы можете передать объект RequestInit в конструктор Request() или непосредственно в вызов функции fetch().

Также можно создать Request с помощью RequestInit, и передать Request в вызов fetch() вместе с другим RequestInit. Если вы это сделаете, и одна и та же опция задана в обоих местах, то будет использовано значение, переданное непосредственно в fetch().

Свойства экземпляра

attributionReporting Необязательно Экспериментальный

Указывает, что вы хотите, чтобы ответ на запрос мог зарегистрировать JavaScript-ориентированный источник отслеживания или триггер отслеживания. attributionReporting — это объект, содержащий следующие свойства:

eventSourceEligible

Логическое значение. Если установлено в true, ответ на запрос подходит для регистрации источника отслеживания. Если установлено в false, он не подходит.

triggerEligible

Логическое значение. Если установлено в true, ответ на запрос подходит для регистрации триггера отслеживания. Если установлено в false, он не подходит.

Дополнительные сведения см. в API отслеживания атрибуции.

body Необязательно

Тело запроса содержит данные, отправляемые на сервер, например, в запросе POST или PUT. Оно задаётся как экземпляр любого из следующих типов:

  • строка
  • ArrayBuffer
  • Blob
  • DataView
  • File
  • FormData
  • TypedArray
  • URLSearchParams
  • ReadableStream

Дополнительные сведения см. в Настройка тела.

browsingTopics Необязательно Экспериментальный

Логическое значение, указывающее, что выбранные темы текущего пользователя должны быть отправлены в заголовке Sec-Browsing-Topics вместе с соответствующим запросом.

Дополнительные сведения см. в Использование API тем.

cache Необязательно

Режим кэширования, который вы хотите использовать для запроса. Он может принимать любое из следующих значений:

default

Браузер проверяет кэш HTTP на наличие ответа, соответствующего запросу.

  • Если соответствие найдено и оно актуальное, оно возвращается из кэша.
  • Если соответствие найдено, но оно устаревшее, браузер отправит условный запрос на удаленный сервер. Если сервер укажет, что ресурс не изменился, он возвратится из кэша. В противном случае ресурс будет загружен с сервера, и кэш будет обновлён.
  • Если соответствие не найдено, браузер отправит обычный запрос и обновит кэш загруженным ресурсом.
no-store

Браузер загружает ресурс с удалённого сервера, не проверяя кэш, и не обновляет кэш загруженным ресурсом.

reload

Браузер загружает ресурс с удалённого сервера, не проверяя кэш, но затем обновляет кэш загруженным ресурсом.

no-cache

Браузер проверяет кэш HTTP на наличие ответа, соответствующего запросу.

  • Если соответствие найдено, актуальное или устаревшее, браузер отправит условный запрос на удалённый сервер. Если сервер укажет, что ресурс не изменился, он возвратится из кэша. В противном случае ресурс будет загружен с сервера, и кэш будет обновлён.
  • Если соответствие не найдено, браузер отправит обычный запрос и обновит кэш загруженным ресурсом.
force-cache

Браузер проверяет кэш HTTP на наличие ответа, соответствующего запросу.

  • Если соответствие найдено, актуальное или устаревшее, оно возвращается из кэша.
  • Если соответствие не найдено, браузер отправит обычный запрос и обновит кэш загруженным ресурсом.
only-if-cached

Браузер проверяет кэш HTTP на наличие ответа, соответствующего запросу. Экспериментальный

  • Если соответствие найдено, актуальное или устаревшее, оно возвращается из кэша.
  • Если соответствие не найдено, возвращается ошибка сети.

Режим "only-if-cached" может быть использован только в том случае, если режим запроса mode равен "same-origin". Перенаправления из кэша будут выполнены, если свойство запроса redirect равно "follow", и перенаправления не нарушают режим "same-origin".

credentials Необязательно

Управляет отправкой браузером учётных данных в запросе, а также обработкой заголовков ответа Set-Cookie. Учётные данные включают куки, TLS-клиентские сертификаты или заголовки аутентификации, содержащие имя пользователя и пароль. Этот параметр может принимать одно из следующих значений:

omit

Учётные данные никогда не отправляются в запросе и не включаются в ответ.

same-origin

Учётные данные отправляются и включаются только для запросов с одинаковым происхождением.

include

Учётные данные всегда включаются, даже для запросов с разным происхождением.

Включение учётных данных в запросах с разным происхождением может сделать сайт уязвимым для CSRF-атак, поэтому даже если credentials установлено в include, сервер должен также разрешить их включение, добавив заголовок Access-Control-Allow-Credentials в ответ. Кроме того, в этой ситуации сервер должен явно указать происхождение клиента в заголовке ответа Access-Control-Allow-Origin (то есть, * не разрешается).

Дополнительные сведения см. в Включение учётных данных.

По умолчанию same-origin.

headers Необязательно

Любые заголовки, которые вы хотите добавить в запрос, содержащиеся в объекте Headers или в объекте, ключи которого — имена заголовков, а значения — значения заголовков.

Многие заголовки устанавливаются автоматически браузером и не могут быть установлены скриптом: они называются запрещенными именами заголовков.

Если параметр mode установлен в no-cors, вы можете устанавливать только безопасные заголовки запроса CORS.

Дополнительные сведения см. в Настройка заголовков.

integrity Необязательно

Содержит значение целостности подресурса запроса.

Это будет проверено при получении ресурса, точно так же, как и при установке атрибута integrity на элементе <script>. Браузер вычислит хеш полученного ресурса с использованием указанного алгоритма, и если результат не совпадает со значением, указанным в запросе, браузер отклонит запрос с ошибкой сети.

Формат этого параметра — <hash-algo>-<hash-source>, где:

  • <hash-algo> — одно из следующих значений: sha256, sha384, или sha512
  • <hash-source> — кодирование Base64 результата хэширования ресурса с использованием указанного алгоритма хэширования.

По умолчанию пустая строка.

keepalive Необязательно

Булево значение. Если установлено в true, браузер не прервёт связанный запрос, если страница, которая его инициировала, будет загружена до завершения запроса. Это позволяет запросу fetch() отправлять аналитику в конце сессии, даже если пользователь перейдёт на другую страницу или закроет её.

Это имеет некоторые преимущества по сравнению с использованием Navigator.sendBeacon() для той же цели. Например, можно использовать HTTP-методы помимо POST, настраивать свойства запроса и получать ответ сервера через выполнение Promise запроса fetch. Он также доступен в сервис-воркерах.

Размер тела для запросов keepalive ограничен 64 килобайтами.

По умолчанию false.

method Необязательно

Метод запроса.

По умолчанию GET.

mode Необязательно

Устанавливает поведение кросс-доменного запроса. Одно из следующих значений:

same-origin

Запрещает кросс-доменные запросы. Если запрос same-origin отправляется на другой домен, результат – ошибка сети.

cors

Если запрос кросс-доменный, используется механизм Cross-Origin Resource Sharing (CORS). В ответе доступны только заголовки ответа, разрешённые CORS.

no-cors

Отключает CORS для кросс-доменных запросов. Данный параметр имеет следующие ограничения:

  • Метод может быть только одним из HEAD, GET или POST.
  • Заголовки могут быть только разрешёнными CORS заголовками запроса, с дополнительным ограничением, что заголовок Range также запрещён. Это также относится к любым заголовкам, добавленным сервис-воркерами.
  • Ответ является непрозрачным, то есть его заголовки и тело недоступны для JavaScript, а код состояния статус кода всегда 0.

Основное применение no-cors – для сервис-воркера: хотя ответ на запрос no-cors не может быть прочитан JavaScript, он может быть кэширован сервис-воркером и затем использован как ответ на перехваченный запрос fetch. Обратите внимание, что в этой ситуации вы не знаете, успешен ли запрос, поэтому вам следует использовать стратегию кэширования, которая позволяет обновлять кэшированный ответ из сети (например, cache first с обновлением из кэша).

navigate

Используется только для навигации HTML. Запрос navigate создаётся только при навигации между документами.

Подробности см. в Разделе о кросс-доменных запросах.

По умолчанию cors.

priority Необязательно

Определяет приоритет запроса fetch по отношению к другим запросам того же типа. Должно быть одним из следующих:

high

Запрос fetch с высоким приоритетом по отношению к другим запросам того же типа.

low

Запрос fetch с низким приоритетом по отношению к другим запросам того же типа.

auto

Нет предпочтений пользователя для приоритета запроса fetch. Используется, если значение не задано или задано некорректное значение.

По умолчанию auto.

redirect Необязательно

Определяет поведение браузера в случае, если сервер отвечает кодом редиректа. Одно из следующих значений:

follow

Автоматически перенаправляется на указанный адрес.

error

Отклоняет промис с ошибкой сети, когда возвращается статус редиректа.

manual

Возвращает ответ с почти всеми полями, отфильтрованными для возможности хранить ответ в сервис-воркере и повторно его использовать.

По умолчанию follow.

referrer Необязательно

Строка, задающая значение для заголовка запроса Referer. Одно из следующих значений:

Относительный или абсолютный URL того же домена

Устанавливает заголовок Referer на заданное значение. Относительные URL интерпретируются относительно URL страницы, которая инициировала запрос.

Пустая строка

Не устанавливает заголовок Referer.

about:client

Устанавливает заголовок Referer на значение по умолчанию для контекста запроса (например, URL страницы, которая инициировала запрос).

По умолчанию about:client.

referrerPolicy Необязательно

Строка, устанавливающая политику для заголовка Referer. Синтаксис и семантика этого параметра точно такие же, как у заголовка Referrer-Policy.

signal Необязательно

AbortSignal. Если этот параметр установлен, запрос можно отменить, вызвав abort() соответствующего AbortController.

Примеры

Передача параметров в fetch()

В этом примере мы передаём параметры method, body, и headers напрямую в вызов метода fetch():

async function post() {
  const response = await fetch("https://example.org/post", {
    method: "POST",
    body: JSON.stringify({ username: "example" }),
    headers: {
      "Content-Type": "application/json",
    },
  });

  console.log(response.status);
}

Передача параметров в конструктор Request()

В этом примере мы создаём Request, передавая те же параметры в его конструктор, а затем передаём запрос в fetch():

async function post() {
  const request = new Request("https://example.org/post", {
    method: "POST",
    body: JSON.stringify({ username: "example" }),
    headers: {
      "Content-Type": "application/json",
    },
  });

  const response = await fetch(request);

  console.log(response.status);
}

Передача параметров в конструктор Request() и метод fetch()

В этом примере мы создаём Request, передавая параметры method, headers, и body в его конструктор. Затем мы передаём запрос в fetch() вместе с параметрами body и referrer:

async function post() {
  const request = new Request("https://example.org/post", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ username: "example1" }),
  });

  const response = await fetch(request, {
    body: JSON.stringify({ username: "example2" }),
    referrer: "",
  });

  console.log(response.status);
}

В этом случае запрос будет отправлен со следующими параметрами:

  • method: "POST"
  • headers: {"Content-Type": "application/json"}
  • body: '{"username":"example2"}'
  • referrer: ""

Спецификации

Спецификация
Fetch
# requestinit

См. также

  • Использование Fetch
  • API сервис-воркеров
  • Контроль доступа к HTTP (CORS)
  • HTTP

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RequestInit

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API