【问题标题】:How to enable sharedArrayBuffer in chrome without cross-origin isolation如何在没有跨域隔离的情况下在 chrome 中启用 sharedArrayBuffer
【发布时间】:2021-12-27 15:39:01
【问题描述】:

我有这个实验,我只在我的本地机器上运行:我从 https://example.com 加载一个外部网页,并使用 puppeteer 注入一个从 http://localhost:5000 提供的 javascript 文件。

到目前为止,没有任何问题。但是,这个注入的 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');

我对这两个文件都这样做了,但没有取得多大成功。鉴于页面来自与注入的 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 问题也有一个选项?

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

【问题讨论】:

    标签: javascript google-chrome puppeteer webassembly sharedarraybuffer


    【解决方案1】:

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

    $> chrome --enable-features=SharedArrayBuffer 
    

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

    【讨论】:

    • 这在 MacO 上对我不起作用,可能是因为它不再是一个实验性功能。也许我在 Linux Mint 上的运气会更好。
    【解决方案2】:

    Peter Beverloo 不久前在他的博客上列出了一份详尽的 Chromium 命令行开关列表。

    有很多命令行可以与 Google Chrome 浏览器一起使用。一些改变特性的行为,其他的用于调试或试验。此页面列出了可用的开关,包括它们的条件和描述。上次自动更新发生在 2020 年 8 月 12 日。

    如果您正在寻找一个特定的命令,它会在那里,试一试。尽管我很确定跨域限制是专门为了防止您尝试做的事情而实施的。

    【讨论】:

    • 我认为大多数这样的事情都可以,只要它们只在您的本地机器(localhost)上。我刚刚发现这个选项--enable-features=SharedArrayBuffer 解决了这个问题!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-11-05
    • 2017-04-22
    • 2021-06-03
    • 2014-05-22
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多