Firefox身份验证窗口冻结Extension的后台脚本



我运行了一个私有扩展,它监听WebRequest并在特定(不存在的)URL上执行操作:

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

它提取查询参数,丢弃新选项卡并连接到服务。当Firefox打开并运行时,操作简单且良好。

在Firefox关闭的情况下点击URL,只有在没有身份验证窗口(例如代理)的情况下,它才起作用。如果显示身份验证窗口,则整个后台脚本将冻结,并且在关闭之前不会继续。该url的有效期很短,因此冻结会使其停留太久,并且该url将无效。

是否有任何可能让后台脚本运行,无论是否显示身份验证窗口。

在Firefox关闭的情况下点击URL

你的意思是点击另一个应用程序中的URL,导致Firefox启动并打开链接吗?

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

是否有可能让后台脚本运行而不管是否显示authantication窗口。

browser.webRequest.onAuthRequired.addListener()在Auth弹出窗口之前被激发。同时,["阻止"]将阻止对该请求采取进一步行动,直到该请求得到解决。doSomething必须是一个承诺,以防止弹出窗口的执行,例如将请求传递回浏览器进行处理。

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

后台脚本可以运行,而不考虑authpop,但这取决于代码的编写方式。身份验证弹出窗口不会停止后台脚本的运行。

最新更新