问题标签 [cloudflare-workers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
287 浏览

javascript - 当提取主体为缓冲区时,无法将对象放置在数字海洋空间上

我正在学习 cloudflare 工作者,我需要通过数字海洋将对象存储在空间中。

如果您不知道,cloudflare worker 不能使用常规的aws-sdkjs 库,因为它使用XMLHttpRequest了 worker 的隔离区不可用的库。

我正在使用空间 API 进行手动 PUT,并且可以毫无问题地将纯文本对象上传到存储桶。

当我尝试使用构造函数放置图像时,问题就开始了new Buffer.from(...some image content as base64...,'base64'),我从空间 API 得到的错误是XAmzContentSHA256Mismatch,我认为问题是当我将正文散列到sha256使用crypto-js库时,但我不知道为什么。

当 body 变量是字符串并且 contentType 是时,它的效果很好text/plain

任何帮助,将不胜感激。

0 投票
1 回答
97 浏览

gatsby - 使用 GatsbyJs 和 Cloudflare Workers 从 Contentful 中自动提取博客文章

我只是想知道是否有一种方法可以在每次添加新博客时自动从 Contentful 获取博客文章。我的网站托管在 Cloudflare Workers 上,我使用 GatsbyJs 作为 SSG。

0 投票
1 回答
459 浏览

cloudflare-workers - Cloudflare Worker fetch() 全局不尊重 Cloudflare 工作器路由

我有一个由 Cloudflare 代理的 Web 应用程序,运行在hybrid-app.example

我正在使用Cloudflare Worker Sites模式在hybrid-app.example/static-content/. 这个工人正在监听路线*hybrid-app.example/static-content*https://hybrid-app.example/static-content/hello.html我可以通过导航到并从我的静态站点中查看正确的内容来验证此工作器的配置是否正确。

我还有第二个 Cloudflare 工作者,它使用工作者路由器模式将静态站点中的选择页面代理到同一域上的虚 URL。特别是,这个工人被配置为监听路由*hybrid-app.example/hello*。在内部,它执行以下操作:

但是当我导航到 时https://hybrid-app.example/hello,我看到一个GET请求访问/static-content/hello.html我的源服务器。因此,当我fetch在 Cloudflare 工作程序中调用函数时,它似乎在解析请求而不检查与任何其他工作程序路由的匹配。我可以使用 Fetch API 的替代方法来强制来自一个 cloudflare 工作人员的请求,以在解析之前检查其他匹配的 CF 工作人员路由吗?

0 投票
1 回答
358 浏览

javascript - 在服务工作者的单个提取请求中仅获取 HTML

我正在使用 Cloudflare 服务人员,我希望在每个请求中:

  1. 仅请求 HTML(因此仅计为 1 个请求)
  2. 在响应中搜索字符串
  3. 如果消息存在,则清除该页面的缓存

我已经解决了第 2 点和第 3 点。无法弄清楚#1是否可行或可能。

我只需要一个请求,因为每天的免费请求数量是有限制的。否则我每页大约有 50-60 个请求。

我目前对 #1 的尝试,但不能正常工作:

0 投票
1 回答
52 浏览

javascript - 删除 javascript (nodejs) 中的元素

如何使用 Javascript 删除元素?为此,我遵循以下代码:

参考:使用 JavaScript(无 jQuery)从元素中删除 CSS 类

这段代码: https ://gist.github.com/ParveenBhadooOfficial/9c94d4bd814542d5fed5ee69e9470139

上面两个代码怎么可以同时使用呢?

0 投票
1 回答
725 浏览

javascript - Cloudflares Worker Cache API 出现问题

我现在花了无数个小时试图让缓存 API 缓存一个简单的请求。我让它在两者之间工作过一次,但忘记在缓存键中添加一些东西,现在它不再工作了。不用说,cache.put()没有一个返回值来指定请求是否实际被缓存并不能完全帮助我,我只能反复试验。有人可以提示我做错了什么以及实际需要什么吗?我现在已经阅读了所有文档超过 3 遍,我很茫然……</p>

值得注意的是,这个 REST 端点集pragma: no-cache和其他所有与无缓存相关的缓存,但我还是想强制缓存响应,这就是为什么我尝试在缓存之前完全重写标头,但它仍然无法正常工作(不匹配或不存储,没有人知道......)

在此先感谢您的帮助,我首先在 Cloudflare 社区上提出了相同的问题,但在 2 周内没有收到答复

0 投票
1 回答
482 浏览

javascript - Cloudflare Workers 主 URL 重定向不起作用,参数也不起作用

异地在这里。我正在尝试使用 Cloudflare Workers 将子域重定向到不同的域,但它不起作用:wa.example.com 到 wa.me/60123456789

及其运行良好的路径:wa.example.com/WantToBuy 到 wa.me/60123456789?text=Want%20To%20Buy

此外,我无法从同一脚本中的子域中删除参数(fbclid) 。

这个工人的路线是 wa.example.com/*

我如何使它工作?先感谢您。

这是我的完整脚本:

0 投票
0 回答
419 浏览

laravel - 如何构建使用 Cloudflare Workers KV 作为数据存储的 Laravel 缓存驱动程序?

默认情况下,Laravel 似乎需要在“表”中定义缓存驱动程序。标准的缓存驱动当然是——file、memcached、redis等。

Cloudflare Workers 和 Cloudflare Workers KV 是一个计算 + 键/值对存储系统,我想将其用于缓存目的(即从 Laravel 写入 Workers KV,但从边缘获取项目)。这最大限度地提高了缓存性能,因为任何缓存的请求都可以由 Cloudflare Worker 处理,缓存也位于边缘。换句话说,如果被缓存,任何请求都不会在源头到达我们的 API。它还让我们不必在世界各地的 AWS 中创建源,甚至可以执行诸如数据库复制之类的事情,以考虑全球 API 消费者的光速延迟。

我想为我们的 SaaS 产品Tallyfy的REST API构建一个使用 Cloudflare KV 的缓存驱动程序。这将为我们提供客户想要/应得的那种令人讨厌的性能和安全优势。我该怎么做呢?

0 投票
0 回答
97 浏览

angular - 如何将 Angular 可观察对象与 CloudFlare 工作人员一起使用并获取?

我有一个 Angular9+ PWA(在本地运行良好)。我已将其部署到 CloudFlare Workers 站点。我想获取一些存储在 Worker KV 中的数据,但不知道如何实现。谁能给我建议?

我在 Angular 应用中有一个简单的服务,我想调用一个 Get 请求来检索 Worker KV 数据。我注意到 Worker 文件正在使用“Fetch”(Promises?),但我的服务正在使用 Observables(HttpClient)。所以我不知道如何解决这个问题?

这是一个简单的服务(在某处的组件模板中使用异步):

这是一个测试KV:

不知道下一步该做什么(CloudFlare 对我来说是新的)。谢谢。

0 投票
1 回答
421 浏览

javascript - 通过 cloudflare worker 使用相同的 URL 提供不同的缓存版本

我从许多使用不同版本的移动和桌面网站的人那里看到了一个非常常见的问题,许多主题都具有此功能。问题是无论用户设备如何,Cloudflare 都会缓存相同的页面,从而导致桌面和移动版本之间的混合和不一致。

最常见的解决方案是将移动版本分离到另一个 URL,但就我而言,我想使用相同的 URL 并使 Cloudflare 缓存在桌面和移动设备上都能正常工作。

我发现这个非常好的指南展示了如何解决这个问题,但是,工作代码似乎已经过时,我不得不修改一些部分以使其工作。

我为我的工作人员创建了一个新的子域,然后将路由分配到我的站点,以便它开始运行。

工作人员正在缓存所有内容,但是,它没有根据设备具有不同缓存版本的所需功能。

它确实在检测正确的用户代理,但根据分配的查询字符串,它应该有两个单独的缓存版本......

我想也许我缺少一些配置,我不知道为什么它没有按预期工作。就像现在一样,我仍然混合使用我的移动和桌面缓存版本。