我需要使用插件自动执行代理服务器的授权。
我还检查了其他扩展的来源,他们这样做是这样的:
var httpRequestObserver =
{
observe: function(subject, topic, data)
{
if (topic === "http-on-modify-request") {
var channel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
channel.setRequestHeader("Proxy-Authorization", "Basic myauthorizationtoken" , false);
}
}
};
请求观察者将授权标头添加到每个传出请求。如果设置了常规代理,那效果很好,但是在我的情况下,我有一个代理 pac url,其中只有特定的请求是使用代理完成的,而其他的则不是!
在这种情况下,基本上包含明文凭据的授权标头将传输到未通过代理访问的每个网站。
显然不可能,因此我需要找出当前请求是否是代理请求,然后才设置标头。
或者一起寻找其他方式...
在 chrome 中,我是这样做的:
chrome.webRequest.onAuthRequired.addListener(handleAuthRequest,
{urls: ["<all_urls>"]}, ["asyncBlocking"]);
function handleAuthRequest(details, callback) {
if (details.isProxy === true){
callback({authCredentials: {username: localStorage['login'],
password: localStorage['pass']}});
}
callback();
}
显然这是最优的!但是我在 Firefox 中看不到一个很好的方法来做到这一点。