簡體   English   中英

啟用跨域隔離時,web worker 是否不可用

[英]Is web worker unavailable when cross-origin isolation is enabled

這是我的兩個文件,test.js 和 test.php。

測試.js:

console.log("test.js is loaded")

測試.php:

<?php
header('Content-Type: text/html; charset=UTF-8');
//header('Cross-Origin-Embedder-Policy: require-corp');
//header('Cross-Origin-Opener-Policy: same-origin');
?><!DOCTYPE html>
<html>
<title>test</title>
<script>
new Worker("/test.js")
</script></html>

瀏覽器控制台按預期打印“test.js 已加載”。 但是如果我注釋掉 test.php 中的這兩行,瀏覽器控制台中不會打印任何內容,這意味着如果我啟用跨域隔離策略,就會出現阻止加載工作程序的問題。 那么在啟用跨域隔離策略的情況下,有沒有正確的方法來使用worker呢?

順便說一句,我必須啟用跨域隔離策略,因為我需要使用 SharedArrayBuffer。

不,Web Worker 可用,但是您的主工作腳本必須在其響應中使用相同的標頭提供服務,這是因為 Worker 確實創建了一個新領域,並且您不能“降級”嵌入器策略

規格鏈接: https ://html.spec.whatwg.org/multipage/origin.html#check-a-global-object's-embedder-policy。

請注意,如果您無法設置此文件的標頭,您仍然可以使用通常的blob:URL + importScripts() hack ,但正確配置的服務器總是比 hacks 更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM