Request.mode

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.

Read-only свойство mode интерфейса Request описывает режим запроса (например, cors, no-cors, same-origin или navigate.) Используется для проверки, вызывает ли кросс-доменный запрос корректный ответ, и какие свойства ответа доступны для чтения.

Синтаксис

var myMode = request.mode;

Значения

Значения RequestMode.

Соответствующие доступные значения:

  • same-origin — Если запрос сделан к другому origin в этом режиме, то это вызовет ошибку. Можно использовать этот режим, чтобы проверить, что запрос всегда будет обращён к тому же origin, что и текущий.
  • no-cors — Разрешает использование только HEAD, GET или POST методов и простых заголовков (т.е. разрешены только простые запросы). Если какой-либо ServiceWorkers перехватит запрос, то он не сможет добавить или изменить заголовки, кроме простых. Также, для JavaScript может быть ограничен доступ к любому свойству объекта ответа Response. Это позволяет наверняка знать, что ServiceWorkers не изменили семантику и предотвратить проблемы безопасности и конфиденциальности, возникающие при утечке данных между доменами.
  • cors — Разрешает кросс-доменные запросы. Например, чтобы получить доступ к некому API, предоставляемое третей стороной. Ожидается, что запрос в этом режиме будет придерживаться CORS протокола (en-US). В объекте ответа Response доступен ограниченный набор заголовков, но тело доступно для чтения.
  • navigate — Режим, поддерживающий навигацию. Значение navigate предназначено только для использования в HTML навигации. Запрос в этом режиме создаётся только во время навигации между страницами.

Default mode

Запрос может быть создан разными способами и режим запроса зависит от конкретных средств, с помощью которых он был инициирован.

Например, когда объект Request создаётся с помощью конструктора Request.Request (en-US), свойство mode этого Request будет иметь значение cors.

Однако, запросы созданные не конструктором Request.Request (en-US), будут использовать режим no-cors. Например, для встроенных ресурсов, где запрос инициируется из разметки, если отсутствует атрибут crossorigin, то запрос в большинстве случаев будет выполнен в режиме no-cors — то есть для элементов <link> или <script> (кроме использования с модулями), или <img>, <audio>, <video>, <object> (en-US), <embed>, или <iframe> (en-US).

Пример

В этой части кода создаётся новый запрос (для взятия файла картинки) через конструктор Request.Request() (en-US), затем полученный режим сохраняется в переменной:

js
var myRequest = new Request("flowers.jpg");
var myMode = myRequest.mode; // вернёт "cors" по умолчанию

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

Specification
Fetch Standard
# ref-for-dom-request-mode②

Совместимость с браузерами

BCD tables only load in the browser

See also