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 |
См. также
© 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