微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webRequest onAuthRequired永不捕获407 Proxy Authentication Required

如何解决webRequest onAuthRequired永不捕获407 Proxy Authentication Required

我正在尝试通过chrome扩展来处理代理身份验证。

一方面,我有 chrome扩展(已建立所有权限),该扩展使用 onAuthrequired处理程序(background.js)发送CONNECT请求。

chrome.webRequest.onAuthrequired.addListener(
    (details,callback) => {
        console.log('onAuthrequired',details) // <- this has never been displayed
        callback({
            authCredentials: {
                username: 'someid',password: 'somepwd'
            }
        })
    },{
        urls: ['<all_urls>']
    },['asyncBlocking']
)

const config = {
    mode: "pac_script",pacScript: {
        data: "function FindProxyForURL(url,host) {\n if (shExpMatch(host,\"*.pandora.com\"))\n return 'PROXY 127.0.0.1:8124';\n return 'DIRECT';\n }"
    }
}

chrome.proxy.settings.set({
    value: config,scope: 'regular',},function(){})

另一方面,我有 NodeJS代理服务器,该服务器始终发送specifications

中所述的407状态代码
const http = require('http');

const proxy = http.createServer()
proxy.on('connect',(req,clientSocket,head) => {
    clientSocket.write('HTTP/1.1 407 Proxy Authentication required')
    clientSocket.write('Proxy-Authenticate: Basic realm="Access to site"\r\n\n')
});

proxy.listen(8124)

最后,浏览器返回ERR_PROXY_AUTH_UNSUPPORTED,这意味着状态代码已正确发送...

事实是 onAuthrequired从未触发,有人可以告诉我为什么吗?

提前谢谢

解决方法

Chrome积极地将身份验证调用缓存到代理服务器。因此,每个浏览器会话只会看到一次console.log调用(您需要完全重启Chrome,如果打开了多个配置文件,则需要在清除身份验证缓存之前关闭所有Chrome实例)。

我目前正在尝试弄清如何清除或清空所述缓存。

另请参阅(How to delete Proxy-Authorization Cache on Chrome extension?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。