WorkerGlobalScope: crossOriginIsolated 屬性
注意:此功能僅在 Web Workers 中可用。
crossOriginIsolated 是 介面的一個只讀屬性,它返回一個布林值,指示文件是否是跨源隔離的。WorkerGlobalScope
跨源隔離的文件僅與其在彈出視窗和導航中的同源文件共享其瀏覽上下文組,以及透過CORS(以及 <iframe> 的COEP)選擇加入使用的資源(同源和跨源)。與該文件的跨源開啟者或其開啟的任何跨源彈出視窗的關係將被切斷。該文件還可以與它可以操作共享記憶體進行通訊的其他文件一起託管在單獨的作業系統程序中。這減輕了稱為XS-Leaks 的側通道攻擊和跨源攻擊的風險。
跨源隔離的文件在使用以下 API 時受到的限制較少
SharedArrayBuffer可以透過DedicatedWorkerGlobalScope.postMessage()或MessagePort.postMessage()呼叫建立和傳送。Performance.now()提供更高的精度。Performance.measureUserAgentSpecificMemory()可以被呼叫。
如果文件是透過包含以下標頭的 HTTP 響應返回的,則該文件將被跨源隔離:
- 帶有
same-origin指令的Cross-Origin-Opener-Policy標頭。 - 帶有
require-corp或credentialless指令的Cross-Origin-Embedder-Policy標頭。
對 API 的訪問還必須由 Permissions-Policy cross-origin-isolated 允許。否則,crossOriginIsolated 屬性將返回 false,並且文件將無法使用上面列出的限制較少的 API。
值
一個布林值。
示例
跨源隔離文件
要跨源隔離文件,請執行以下操作:
-
將
Cross-Origin-Opener-PolicyHTTP 標頭設定為same-originhttpCross-Origin-Opener-Policy: same-origin -
將
Cross-Origin-Embedder-PolicyHTTP 標頭設定為require-corp或credentiallesshttpCross-Origin-Embedder-Policy: require-corp Cross-Origin-Embedder-Policy: credentialless -
Permissions-PolicyPermissions-Policy標頭的cross-origin-isolated指令不得阻止對該功能的訪問。請注意,該指令的預設允許列表是self,因此預設情況下會授予跨源隔離文件的許可權。
檢查文件是否是跨源隔離的
js
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 |
瀏覽器相容性
載入中…