对于应当允许失败的网页资源,现有 Firefox 扩展可以取消它的代理认证挑战。这样该请求就此结束,而不是反复向用户索要另一个密码。

browser.webRequest.onAuthRequired.addListener(details => {
  if (details.isProxy) {
    return {cancel: true};
  }
  return {};
}, {urls: ['https://optional.example/*']}, ['blocking']);

扩展需要 webRequest、webRequestBlocking 以及相应的主机权限。请把示例替换为该可选资源的具体 URL 模式。过滤器匹配的是被请求的资源,而不只是代理服务器的地址。

isProxy 用来区分中间设备的认证挑战与网站自身的 HTTP 认证。保留这一检查可以避免仅因为网站使用同一事件就取消它的登录。

请求被取消,因此该资源仍然不可用。只有当这种损失是有意为之才合适,例如某条非必需连接反复引发提示。必需的内容仍然需要可用的账户和代理策略。

Firefox 对浏览器的系统请求有特殊规则。扩展在拥有额外权限时可以为其中一些请求提供代理凭据,但无法取消或修改这些系统请求。本文的页面资源示例并不保证每个后台操作都能被静默取消。

相关文章