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. Оно задаётся как экземпляр любого из следующих типов:Дополнительные сведения см. в Настройка тела.
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 с обновлением из кэша). - Метод может быть только одним из
-
Используется только для навигации 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 |
См. также
© 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