找出当前请求是否是firefox中的代理请求?

时间:2013-03-14 23:49:11

标签: javascript firefox firefox-addon xul

我需要使用插件自动使用代理服务器执行授权。

我还检查了其他扩展程序的来源,他们这样做:

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中看到一个很好的方法来实现它。

1 个答案:

答案 0 :(得分:0)

证明主题有一个属性proxyInfo为null或set,proxyInfo还有其他属性要检查