提供?持久?来自扩展的代理身份验证凭据

时间:2013-11-23 16:57:46

标签: javascript google-chrome-extension

我正在开发一个chrome扩展程序,它提供了一个可供选择的代理列表,用户可以设置他喜欢哪一个。这可以通过以下代码完成:

var proxyConfig = {
    mode : "fixed_servers", 
    rules : {
        proxyForHttps : {
            scheme: "http",
            host: undefined,
            port: undefined
        },
        proxyForHttp : {
            scheme: "http",
            host: undefined,
            port: undefined
        },
        proxyForFtp : {
            host: undefined,
            port: undefined
        }
    }
};

function setProxyConfig (ip, port) {
    // sets ip and port for the various protocols

    proxyConfig.rules.proxyForHttps.host = ip;
    proxyConfig.rules.proxyForHttps.port = port;
    proxyConfig.rules.proxyForHttp.host = ip;
    proxyConfig.rules.proxyForHttp.port = port;
    proxyConfig.rules.proxyForFtp.host = ip;
    proxyConfig.rules.proxyForFtp.port = port;
};

setProxyConfig(ip, port);

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

现在此代理设置持久。如果您重新启动Chrome,它仍处于活动状态。这就是我遇到问题的地方:代理身份验证。目前,这是通过以下代码完成的:

chrome.webRequest.onAuthRequired.addListener(
    function(details, callbackFn) {
        callbackFn({
            authCredentials: {
                username: String(Model.Options.username),
                password: String(Model.Options.passwordPlain)
            }
        });
    },
    {urls: ["<all_urls>"]},
    ['asyncBlocking']
);

现在我的问题是,有些用户以启动时重新打开最后打开的标签的方式配置Chrome。现在,他们不是加载标签,而是获取Chrome弹出窗口,要求他们输入当前活动代理的用户名和密码。这是一个问题,因为我们希望通过我们的扩展程序自动执行此操作。理想情况下,用户根本看不到弹出窗口 - 除非她重新启动Chrome并且标签再次重新打开,否则就是这种情况。

因此,这些选项卡已经在请求URL之后,似乎已加载扩展名 - 因为没有为这些选项卡调用chrome.webRequest.onAuthRequired侦听器。

所以问题是: 有没有办法让用户名和密码也持久? 你会怎么处理这个?

也许这是在标签后加载扩展程序的错误?或者我们也可以让听众持久化吗?

提前感谢您的回答!

0 个答案:

没有答案