gpt4 book ai didi

javascript - Iframe 中的 SharedArrayBuffer

转载 作者:行者123 更新时间:2023-12-05 00:33:37 28 4
gpt4 key购买 nike

所以 SharedArrayBuffer 最近是 limited to Cross-origin isolated pages作为安全修复。
我们有一个依赖于 SharedArrayBuffer 的工具,我通过将它移动到一个去掉所有其他站点 UI 的准系统页面并发送以下 header 来重新设计它以再次工作:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
尝试将其加载到成熟网站的 iframe 中会给我控制台错误 SharedArrayBuffer will require cross-origin isolation as of M92后跟 ReferenceError: SharedArrayBuffer is not defined - 与我在跨域隔离最小页面本身上的工具之前得到的相同。
我试图在其中包含 iframe 的页面不是跨域隔离的。如果不是不可能,那将是非常困难的。我根本不需要从父页面与 iframe 交谈,这只是一种方便/风格的东西。目前的生产解决方案只是将用户链接到新窗口中的最小跨源工具页面,但这很尴尬。
我希望有一些 iframe sandbox attributes 的组合或者可以使这项工作的东西?我为此奋斗了几个小时。
据我所知,这可能不可行。

最佳答案

我不确定此选项是否适合您的情况,但也许它可以帮助您找到完整的解决方案。
这个blogpost描述了通过 ServiceWorker 中的 header 修改来启用 SharedArrayBuffer。它按以下顺序工作:

  • 第一次加载页面时,注册一个Service Worker
  • 页面重新加载
  • SharedArrayBuffer 变得可用,因为 ServiceWorker 控制所有请求的所有 CORS header

  • Service Worker 通过添加 CORS/COEP header 来修改所有请求(示例取自上述博文):

    self.addEventListener("install", function() {
    self.skipWaiting();
    });

    self.addEventListener("activate", (event) => {
    event.waitUntil(self.clients.claim());
    });

    self.addEventListener("fetch", function(event) {
    if (event.request.cache === "only-if-cached" && event.request.mode !== "same-origin") {
    return;
    }

    event.respondWith(
    fetch(event.request)
    .then(function(response) {
    // It seems like we only need to set the headers for index.html
    // If you want to be on the safe side, comment this out
    // if (!response.url.includes("index.html")) return response;

    const newHeaders = new Headers(response.headers);
    newHeaders.set("Cross-Origin-Embedder-Policy", "require-corp");
    newHeaders.set("Cross-Origin-Opener-Policy", "same-origin");

    const moddedResponse = new Response(response.body, {
    status: response.status,
    statusText: response.statusText,
    headers: newHeaders,
    });

    return moddedResponse;
    })
    .catch(function(e) {
    console.error(e);
    })
    );
    });

    关于javascript - Iframe 中的 SharedArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69652019/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com