我正在开发chrome扩展程序。该扩展允许从列表中选择任何代理服务器,每个代理都需要授权。当用户想要两次连接到同一代理服务器但使用不同的凭据时,会出现一个问题,例如,如果用户首次成功登录chrome记住了它,以及当用户尝试使用其他凭据连接chrome时将使用首次登录时输入的凭据。
var authCredentials = {
username: 'Jack',
password: 'PassForJack'
}
var auth = function () {
return {
authCredentials
};
};
chrome.webRequest.onAuthRequired.addListener(auth, {
urls: ["<all_urls>"]
}, ["blocking"]);
// set a new proxy server for the first login
chrome.proxy.settings.set({
value: {
mode: 'fixed_servers',
rules: {
singleProxy: {
host: 'some-proxy-server.com',
port: 8000
}
}
},
scope: 'regular'
});
// change credentails
authCredentials = {
username: 'Bob',
password: 'PassForBob'
};
// remove proxy configuration
chrome.proxy.settings.set({
value: {
mode: 'direct'
},
scope: 'regular'
});
// remove onAuthListener
chrome.webRequest.onAuthRequired.removeListener(auth)
chrome.webRequest.onAuthRequired.hasListener(auth) // returns false
chrome.webRequest.onAuthRequired.addListener(auth, {
urls: ["<all_urls>"]
}, ["blocking"]);
// lets re connect
chrome.proxy.settings.set({
value: {
mode: 'fixed_servers',
rules: {
singleProxy: {
host: 'some-proxy-server.com',
port: 8000
}
}
},
scope: 'regular'
});
// that doesn't help the user would be logged as "Jack" but has to be as "Bob"
答案 0 :(得分:3)
由于问题不是很清楚,这里有多种可能性。我建议首先浏览chrome.webRequest的documentation。但是我的问题是,为什么不使用拦截器方法检查服务器凭证对?在扩展程序的background.js
脚本中添加拦截器有一个不错的article,建议您使用beforeRequest
钩子。