跨域 iframe 中的服务工作者无法拦截 Mozilla Firefox 中的 iframe 网络工作者发起的请求

问题描述 投票:0回答:0

我有以下应用程序结构。

  • https://example-a.com
    • index.html
  • https://example-b.com
    • app.html
    • sw.js
    • worker.js

example-a.com/index.html
example-b.com/app.html
加载一个 iframe,它产生一个服务工作者和一个网络工作者。

Web 工作者向

example-b.com/intercept
发出网络请求。 Service Worker、Web Worker 和网络请求目标 URL 都属于同源 (
example-b.com
),请求 URL 属于 Service Worker 范围(它们都在域的根目录)。

在 Safari 和 Chrome 上,service worker 可以成功拦截来自 web worker 的此类请求。但是,在 Firefox 上,此类请求不会被 SW 拦截。

值得一提的是,service worker可以成功拦截iframe html文档和正则脚本的请求。我遇到的问题与网络工作者特别相关。

我知道 Firefox 有一些额外的服务工作者限制(例如,在私有模式下禁用 SW),但我找不到与我的用例相关的任何限制。

有没有人遇到过类似的问题?这是一个已知的 Firefox 限制还是错误?有没有标题可以帮助我解决这个问题?

可复制的示例应用程序回购(Github)

已部署的示例应用程序

预期行为:service worker 成功拦截请求并返回一个单词“intercepted”。

实际行为

  • Safari、Chrome - 按预期工作。
  • Firefox - service worker 不会拦截请求,而是对 somedifferentdomain.com/intercept 发出实际请求。
firefox iframe cross-domain service-worker
© www.soinside.com 2019 - 2024. All rights reserved.