onAuthRequiredOptions中的"responseHeaders"、"blocking"、"asyncBlocking"有什么区别?

What is the difference between "responseHeaders", "blocking", "asyncBlocking" in onAuthRequiredOptions?

我正在从事一个必须登录 BasicAuth 网站的项目。我遇到了webRequest and realize there are three different onAuthRequiredOptions的文档:即"responseHeaders"、"blocking"、"asyncBlocking".

我试过了,我唯一发现的是 "asyncBlocking",Chrome 会让扩展有机会触发回调,它可以验证 BasicAuth,改变请求 header, e.t.c..

chrome.webRequest.onAuthRequired.addListener(
  function(details, callback) {
    callback({
      authCredentials: {username: "login", password: "login"}
    });
  }, 
  {urls: ['<all_urls>']},
  ['asyncBlocking']
);

但是"responseHeaders","blocking",他们的行为似乎是一样的,他们都没有回调,但后来我想不出其他的区别。

我相信分成三个值是有原因的。所以我想知道他们背后的哲学是什么?

谢谢。

responseHeaders 权限用于填充 details 的可选 属性 并且在几个方法中可用。没有此权限,接收到的 headers 对 webRequest 处理程序不可用。至于 blockingasyncBlocking 它们是相同的,只是一个是同步的而另一个不是。 asyncBlocking 允许您像示例中那样指定回调,而 blocking 期望在处理程序本身中有一个 return,如下所示:

chrome.webRequest.onAuthRequired.addListener(function(details) {
  return {authCredentials: {username: "login", password: "login"}};
}, 
{urls: ['<all_urls>']},['blocking']);