Firefox身份验证窗口冻结了扩展程序

时间:2019-01-29 08:19:31

标签: firefox firefox-addon firefox-webextensions

我运行了一个私人扩展程序,它侦听WebRequests并在特定(不存在)的URL上执行操作:

browser.webRequest.onAuthRequired.addListener(
    doSomething, 
    {urls: ["*://*.xx-xxxxx.net/xxx/connect?*"]}, 
    ["blocking"]
);

它提取查询参数,放弃新的选项卡并连接到服务。打开并运行Firefox时,简单易行。

在Firefox关闭的情况下通过单击URL只能在没有身份验证窗口(例如代理)时使用。如果显示了身份验证窗口,则整个后台脚本将冻结,并且在关闭之前不会继续进行。 该网址仅在短时间内有效,因此冻结会使该网址的保存时间过长,从而使该网址无效。

不管是否显示身份验证窗口,是否都有可能让后台脚本运行。

1 个答案:

答案 0 :(得分:1)

  

通过在Firefox关闭的情况下单击URL

您是说在另一个应用程序中单击一个导致Firefox启动并打开链接的URL吗?

在启动过程中,Firefox首先加载持久性侦听器。这意味着browser.webRequest.onAuthRequired.addListener()必须位于后台脚本的顶层。是这样吗?
否则,它将在以后加载它,并且在它加载时,Firefox已经进行了几次连接尝试,如果它们需要身份验证,则会弹出模式Auth弹出窗口。

  

是否有可能让后台脚本运行   不管是否显示身份验证窗口。

在验证弹出窗口之前会触发

browser.webRequest.onAuthRequired.addListener()。 同时,[“ blocking”]将阻止对该请求采取进一步的措施,直到该请求得到解决。 doSomething必须是一个承诺,以防止执行弹出式窗口,例如将请求传递回浏览器进行处理。

然后doSomething必须通过允许,阻止或重定向等方式处理身份验证。

后台脚本可以运行,而与auth-pop无关,但这取决于代码的编写方式。 auth弹出窗口不会停止后台脚本的运行。