Spec-Zone.ru › Web APIs

WorkerGlobalScope: свойство crossOriginIsolated

Примечание: Эта функция доступна только в Веб-воркерах.

Чтение только свойство crossOriginIsolated интерфейса WorkerGlobalScope возвращает логическое значение, указывающее, изолирован ли документ по различным источникам.

Документ, изолированный по различным источникам, делится группой контекстов просмотра только с документами из того же источника в всплывающих окнах и при переходе, а также с ресурсами (как из того же источника, так и из разных источников), к которым документ предоставил доступ через CORS (и COEP для <iframe>). Связь между открывающим документом из другого источника или любыми всплывающими окнами из другого источника, которые он открывает, прерывается. Документ также может быть размещен в отдельном процессе ОС вместе с другими документами, с которыми он может обмениваться данными, работая с общей памятью. Это снижает риск атак с побочными каналами и атак из разных источников, называемых XS-Leaks.

Документы, изолированные по различным источникам, работают с меньшими ограничениями при использовании следующих API:

  • SharedArrayBuffer может быть создан и отправлен с помощью вызова DedicatedWorkerGlobalScope.postMessage() или MessagePort.postMessage().
  • Performance.now() предлагает лучшую точность.
  • Performance.measureUserAgentSpecificMemory() может быть вызван.

Документ будет изолирован по различным источникам, если он возвращается с HTTP-ответом, который включает заголовки:

  • Cross-Origin-Opener-Policy заголовок с директивой same-origin.
  • Cross-Origin-Embedder-Policy заголовок с директивой require-corp или credentialless.

Доступ к API также должен быть разрешен Permissions-Policy cross-origin-isolated. В противном случае свойство crossOriginIsolated вернёт false, и документ не сможет использовать указанные выше API с уменьшенными ограничениями.

Значение

Логическое значение.

Примеры

Изоляция документа по различным источникам

Для изоляции документа по различным источникам:

  • Установите заголовок HTTP Cross-Origin-Opener-Policy на same-origin:

    Cross-Origin-Opener-Policy: same-origin
    
  • Установите заголовок HTTP Cross-Origin-Embedder-Policy на require-corp или credentialless:

    Cross-Origin-Embedder-Policy: require-corp
    Cross-Origin-Embedder-Policy: credentialless
    
  • Директива cross-origin-isolated заголовка Permissions-Policy не должна блокировать доступ к этой функции. Обратите внимание, что по умолчанию список разрешенных значений директивы self, поэтому разрешение по умолчанию предоставляется для документов, изолированных по различным источникам.

Проверка, изолирован ли документ по различным источникам

const myWorker = new Worker("worker.js");

if (self.crossOriginIsolated) {
  const buffer = new SharedArrayBuffer(16);
  myWorker.postMessage(buffer);
} else {
  const buffer = new ArrayBuffer(16);
  myWorker.postMessage(buffer);
}

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

Спецификация
HTML
# dom-crossoriginisolated-dev

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
crossOriginIsolated 87 87 72 73 15.2 87 79 62 15.2 14.0 87

См. также

  • Window.crossOriginIsolated

© 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/WorkerGlobalScope/crossOriginIsolated

Spec-Zone.ru

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