Окно: свойство 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-PolicyHTTP-заголовок наsame-origin:Cross-Origin-Opener-Policy: same-origin
-
Установите
Cross-Origin-Embedder-PolicyHTTP-заголовок на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 |
См. также
© 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