Request.mode

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 протокола. В объекте ответа Response доступен ограниченный набор заголовков, но тело доступно для чтения.
  • navigate — Режим, поддерживающий навигацию. Значение navigate предназначено только для использования в HTML навигации. Запрос в этом режиме создаётся только во время навигации между страницами.

Default mode

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

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

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

Пример

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

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

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

Specification Status Comment
Fetch
Определение 'mode' в этой спецификации.
Живой стандарт Initial definition

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung Internet
mode
Экспериментальная
Chrome Полная поддержка 42Edge Полная поддержка 14Firefox Полная поддержка 39IE Нет поддержки НетOpera Полная поддержка 29Safari Нет поддержки НетWebView Android Полная поддержка 49Chrome Android Полная поддержка 49Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0
navigate mode
Экспериментальная
Chrome Полная поддержка 49Edge Полная поддержка ДаFirefox Полная поддержка 46IE Нет поддержки НетOpera ? Safari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Полная поддержка 49Firefox Android Нет поддержки НетOpera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Полная поддержка 5.0

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Совместимость неизвестна  
Совместимость неизвестна
Экспериментальная. Ожидаемое поведение может измениться в будущем.
Экспериментальная. Ожидаемое поведение может измениться в будущем.

See also