node.js http与proxy和domain \ user:密码授权

时间:2014-03-18 18:22:42

标签: javascript node.js http proxy

我试图通过代理从Web访问资源。与this response不同,我需要设置域\用户和密码身份验证。

嗯,这是我的代码:

var http = require('http');

var options = {
  host: "proxy.domain.com",
  port: 80,
  path: "http://www.google.com",
  headers: {
    Host: "www.google.com"
  },
  method: 'GET',
  auth: 'domain\\user:password'
};

http.request(options, function (data) {
    console.log('success!', data);
}).on("error", function (e) {
    console.log('error :(', e);
});

上面的代码中提到了以下错误:

error :( { [Error: getaddrinfo ENOTFOUND] code: 'ENOTFOUND', errno: 'ENOTFOUND', syscall: 'getaddrinfo' }

所以,我猜没有发送请求。

有什么问题? 如何使用我尝试设置的参数发送请求?

提前致谢

2 个答案:

答案 0 :(得分:4)

此代码适用于我(在base64中编码并在标头中设置代理授权):

var username = 'yourUsername';
var password = 'yourPass';
var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');

var options = {
  host: "proxy",
  port: 8080,
  path: "https://www.google.com",
  headers: {
        Host: "www.google.com",
        "Proxy-Authorization" : auth
     }
};

答案 1 :(得分:0)

这是更新版本

var.auth =“用户名”:“密码”;

http.get({
            host   : var.hostname,
            port   : var.port,
            path   : requestUrl.href,
            headers: {
                Host                 : requestUrl.host,
                'Proxy-Authorization': `Basic ${new Buffer(var.auth).toString('base64')}`,
            }
        }, response => {
//do what you want with response
})