chrome.webRequest.onAuthRequired监听器

10

我正在尝试在Chrome扩展程序中拦截代理授权。根据这里的回答:Chrome扩展程序中的域授权和阅读此处的文档here,我的代码如下:

chrome.webRequest.onAuthRequired.addListener(
    function(details, callbackFn) {
        console.log("onAuthRequired!", details, callbackFn);
        //callback({
        //    authCredentials: {username: "1", password: "__TestUse"}
        //});
    },
    {urls: ["<all_urls>"]}
);

问题在于callbackFn是未定义的,但应该是一个函数。

有人有任何想法为什么callbackFn是未定义的。按照文档我做得没错..

1个回答

16
代码是有效的,我只是忘记添加另一个参数['asyncBlocking']。 这段代码完全正常:
chrome.webRequest.onAuthRequired.addListener(
    function(details, callbackFn) {
        console.log("onAuthRequired!", details, callbackFn);
        callbackFn({
            authCredentials: {username: "1", password: "__TestUser"}
        });
    },
    {urls: ["<all_urls>"]},
    ['asyncBlocking']
);

请注意,对于Manifest V3(适用于Chrome 108及更高版本),您需要webRequestwebRequestAuthProvider权限。详细信息请参阅https://developer.chrome.com/docs/extensions/reference/webRequest/#event-onAuthRequired

在清单v3中,这到底是如何工作的?asynBlocking和blocking会抛出错误,因为blocking现在应该在declarativeNetRequest中使用。 - Marcus Jason
暂时使用v2版本 https://bugs.chromium.org/p/chromium/issues/detail?id=1135492 - herb
请注意,截至v108版本,Chrome支持一个新的权限webRequestAuthProvider:https://developer.chrome.com/docs/extensions/reference/webRequest/#event-onAuthRequired - slhck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接