注册 Service Worker 失败:由于重定向导致的安全错误

自最新更新以来,我们在 Chrome 中遇到以下与服务 Worker 相关的 JS 错误:

脚本资源位于重定向之后,这是不允许的。

_application-786bec8dbeba5dccf3118668436791948e535eb587456944e94e0724bc417b14.js:76435

注册 Service Worker 失败:SecurityError:为范围 ('https://www.xxxxx.com/') 注册 ServiceWorker 时失败,脚本为 ('https://www.xxxxxx.com/service-worker.js'):脚本资源位于重定向之后,这是不允许的。

我们将上传文件托管在 S3 上,并通过 Cloudfront 进行 CDN 加速。

有人遇到过吗?

我不太确定;我知道 @falco 正在做一些 Service Worker 的改动。

奇怪的是,我在调试控制台查看该脚本时,收到了以下错误:

Could not load content for https://cdn-uploads.xxxxxxx.com/assets/_application-786bec8dbeba5dccf3118668436791948e535eb587456944e94e0724bc417b14.js (HTTP error: status code 403, net::ERR_HTTP_RESPONSE_CODE_FAILURE)

看来该资源并不存在。我现在将尝试重新构建应用。也许只是某个临时故障?

如果您 cURL 服务工作者 URL,您得到的是 3xx 响应而不是 2xx 响应吗?

服务端的 worker.js 返回了 200 状态码,

但加载它的脚本却奇怪地返回了 403。

待应用再次重建后,我会回来汇报情况。

所以 _aplication 是 Chrome 开发者工具的一个显示错误。它只是 application 的美化打印版本,实际上并不存在。这并非本话题所讨论的问题……

因此它并不位于重定向之后。也许你的浏览器缓存了该 URL 的重定向?你能在开发者工具的 Network(网络)标签页中检查这个特定的请求吗?

我已重新构建应用,但错误仍然存在。重新构建时,所有脚本难道不会获得新的 URL,从而应该清除缓存吗?

可以分享一下网站链接吗?

即使禁用调试缓存,错误仍然存在。

我在获取 Service Worker 文件时收到了 302 重定向,而 Meta 上显示的是简单的 200 状态码。你能尝试重新构建吗?

应用已第二次重建,错误已消失。

看起来已解决。谢谢!