Spec-Zone.ru › Web APIs

Окно: свойство crossOriginIsolated

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

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

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

  • SharedArrayBuffer можно создавать и отправлять с помощью вызова Window.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 с меньшими ограничениями.

Значение

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

Примеры

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

Чтобы изолировать документ по различным источникам:

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

    Cross-Origin-Opener-Policy: same-origin
    
  • Установите Cross-Origin-Embedder-Policy HTTP-заголовок на 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 (window.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

См. также

  • WorkerGlobalScope.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/Window/crossOriginIsolated

Spec-Zone.ru

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