我尝试在我的node.js应用中使用模块request,我需要使用身份验证配置代理设置。
我的设置是这样的:
proxy:{
host:"proxy.foo.com",
port:8080,
user:"proxyuser",
password:"123"
}
如何在发出请求时设置我的代理配置?有人能举个例子吗?感谢
答案 0 :(得分:34)
以下是如何配置(https://github.com/mikeal/request/issues/894)的示例:
//...some stuff to get my proxy config (credentials, host and port)
var proxyUrl = "http://" + user + ":" + password + "@" + host + ":" + port;
var proxiedRequest = request.defaults({'proxy': proxyUrl});
proxiedRequest.get("http://foo.bar", function (err, resp, body) {
...
})
答案 1 :(得分:16)
接受的答案并没有错,但我想传递一种满足我发现的不同需求的替代方案。
我的项目特别有一系列代理可供选择,而不仅仅是一个。因此,每次发出请求时,重新设置request.defaults对象都没有多大意义。相反,您可以直接将其传递给请求选项。
var reqOpts = {
url: reqUrl,
method: "GET",
headers: {"Cache-Control" : "no-cache"},
proxy: reqProxy.getProxy()};
reqProxy.getProxy()
返回相当于[protocol]://[username]:[pass]@[address]:[port]
然后提出请求
request(reqOpts, function(err, response, body){
//handle your business here
});
希望这可以帮助那些遇到同样问题的人。欢呼声。
答案 2 :(得分:8)
代理参数使用包含代理服务器网址的字符串,在我的情况下,代理服务器位于http://127.0.0.1:8888
request({
url: 'http://someurl/api',
method: 'POST',
proxy: 'http://127.0.0.1:8888',
headers: {
'Content-Length': '2170',
'Cache-Control': 'max-age=0'
},
body: body
}, function(error, response, body){
if(error) {
console.log(error);
} else {
console.log(response.statusCode, body);
}
res.json({
data: { body: body }
})
});