无论如何可以在 Github Page 上使用 SharedArrayBuffer 吗?

  • 嗨,Chrome 已经实现了使用 SharedArrayBuffer 的一些要求,我们必须包含两个标头:

Cross-Origin-Opener-Policy:同源 Cross-Origin-Embedder-Policy: require-corp

  • 有什么方法可以在 Github 上使用 SharedArrayBuffer 吗?我尝试过 netlify,但他们对带宽有限制。是否有任何类似于 GitHub 的托管静态站点可以允许我们自定义请求标头,以便我们可以使用 SharedArrayBuffer?
woaiyuanyuan 回答:无论如何可以在 Github Page 上使用 SharedArrayBuffer 吗?

截至 2021 年 8 月,GitHub 页面无法提供 COOP/COEP 标头。作为具有自定义标头的替代静态文件服务器,documentation。我不熟悉其他选项。

,

您可以通过 Service Worker(甚至在 Github Pages)设置所需的 COOP 和 COEP 标头,让 SharedArrayBuffer 工作。 This blogpost 将解释基础知识并向您展示如何操作。

本质上,这个想法是

  1. 第一次加载页面时,我们注册工作人员
  2. 然后我们重新加载页面
  3. 最后,既然工作人员正在控制一切,现在每个请求都将设置适当的标头

执行此操作的 Service Worker 必须包含类似于

// sw.js
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) {
        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);
      })
  );
});

我刚刚创建了一个小型图书馆来简化它:coi-serviceworker

,

看起来 Github 不打算添加自定义标题,在 2011 年发现了同样的问题,直到现在仍然没有这个 Github pages,HTTP headers

,

我尝试过 netlify,但他们对带宽有限制。

我使用 Cloudflare Workers 添加此类标头。他们不会在带宽方面限制你(这对庞大的 WebAssembly 文件很有好处),但他们对免费计划的请求数量有限制 - 每月 10,000,000 次请求。 https://developers.cloudflare.com/workers/platform/pricing

公平地说,这个限制通常很难在小型演示中达到(这是 Github Pages 通常的用途),之后价格也不是很高(每增加 100 万个请求 0.50 美元)。

>
本文链接:https://www.f2er.com/2422.html

大家都在问