我可以让多个服务人员都拦截相同的获取请求吗?

Posted

技术标签:

【中文标题】我可以让多个服务人员都拦截相同的获取请求吗?【英文标题】:Can I have multiple service workers both intercept the same fetch request? 【发布时间】:2016-06-30 05:37:36 【问题描述】:

我正在编写一个库,我将提供给第 3 方在他们的站点上运行服务工作者。它需要拦截所有网络请求,但如果他们愿意,我想允许他们构建自己的服务工作者。

我可以让两个服务人员拦截相同的提取并在它们之间提供某种优先级/排序吗?或者我应该使用其他一些模式吗?

谢谢

【问题讨论】:

【参考方案1】:

不,你不能。每个范围只允许注册一个服务工作者,因此the latest kick the previous one out 除非范围更具体,在这种情况下,请求仅由最具体的人参与。

不过,您可以附加多个 fetch 处理程序,它们都会处理请求,因此您可以在单独的脚本中编写功能,并让用户的服务人员通过 importScripts() 包含您的文件。

第一个同步调用event.respondWith() 的处理程序(实际上,您不能异步调用此方法)获胜,其余尝试调用的处理程序将抛出。

优先级和协调需要中间件。您可以查看ServiceWorkerWare 或sw-toolbox。

【讨论】:

知道替换sw-toolbox WorkBox 是否支持中间件的概念? 您好,您可以更新第一个链接吗?它坏了。 @Salva 我有一个主网站服务工作者,范围为“/”,游戏页面“/game”上的另一个服务工作者具有特定范围。然而,主要服务工作者的获取处理程序被调用。我可以检查其他任何内容以确保我的 /game 服务人员优先吗? 然而,许多服务工作者可以从同一个 html 页面加载,在同一个域但不同的范围内运行。

以上是关于我可以让多个服务人员都拦截相同的获取请求吗?的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出Java!java拦截器获取请求post参数

我如何从多个相同的获取请求中连接/合并多个 json?

可以将 Fetch API 用作请求拦截器吗?

axios CancelToken 实现对特定请求的拦截,不要所有请求都进行相同的拦截

jq AJAX拦截器

PhoneGap 2.7 不拦截 Ajax 请求