javascript - 如何在chrome中启用sharedArrayBuffer而不进行跨域隔离

标签 javascript google-chrome puppeteer webassembly sharedarraybuffer

我有一个仅在本地计算机上运行的实验:我从例如 https://example.com 加载外部网页,并使用 puppeteer 注入(inject)一个 javascript 文件,该文件是从 http://localhost:5000 提供服务。

到目前为止没有任何问题。但是,这个注入(inject)的 javascript 文件加载了一个 WebAssembly 文件,然后出现以下错误

Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined
....

事实上,SharedArrayBuffer 没有定义(Chrome v96),结果是我的代码根本无法工作(虽然它曾经工作过)。所以我的问题是,如何解决这个错误?

阅读更多相关内容,似乎您可以添加两个标题

   res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
   res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');

我对这两个文件都做了这件事,但没有取得太大成功。考虑到该页面与注入(inject)的 js 和 WASM 文件来自不同的域,这可能不起作用。

但也许还有其他可能的解决方案。这是我启动 chrome 的命令

      client.browser = await puppeteer.launch({
        headless: false,
        devtools: true,
        defaultViewport: null,
        executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
        args: [
            '--debug-devtools',
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-web-security',
            '--allow-running-insecure-content',
            '--disable-notifications',
            '--window-size=1920,1080'
        ]
        //slowMo: 500
    });

我知道 chrome 有太多选项,所以也许还有一个选项可以解决这个 SharedArrayBuffer 问题?

希望有人知道这是如何工作的并可以帮助我,非常感谢!

最佳答案

this有人建议按如下方式启动 chrome 线程

$> chrome --enable-features=SharedArrayBuffer 

这意味着我可以将 --enable-features=SharedArrayBuffer 添加到我的 puppeteer 配置中!

关于javascript - 如何在chrome中启用sharedArrayBuffer而不进行跨域隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70497520/

相关文章:

node.js - Puppeteer 无法抓取动态生成的内容

javascript - 如何使用 Node puppeteer 获取页面中的所有链接?

javascript - 无法更改 Highcharts 上的日期格式

javascript - 在两个日期内生成随机日期数组的优雅方法

javascript - 添加其上方的类,例如将类 "act"添加到 "<ul>"上方的 "li.item1"

css - @font-face 字体渲染在 Windows 上不是很好

javascript - <select>...</select> 源代码的 CSS 选择器

javascript - 使用 jQuery.load 在另一个模板中显示一个模板

html - 在浏览器中捕获媒体键事件

javascript - 根据 .cpuprofile 文件计算总时间