我想使用标准的http.Client
从node.js发出一个传出的HTTP调用。但是我不能直接从我的网络连接到远程服务器,需要通过代理。
如何告诉node.js使用代理?
发布于 2011-07-22 03:26:36
关于使用HTTP proxy,Tim Macfarlane的answer已经很接近了。
使用HTTP代理(用于非安全请求)非常简单。您连接到代理并正常发出请求,但路径部分包含完整的url,且主机标头设置为您要连接到的主机。
Tim的答案非常接近,但他没有正确设置主机头。
var http = require("http");
var options = {
host: "proxy",
port: 8080,
path: "http://www.google.com",
headers: {
Host: "www.google.com"
}
};
http.get(options, function(res) {
console.log(res);
res.pipe(process.stdout);
});
根据记录,他的答案确实适用于http://nodejs.org/,但这是因为他们的服务器并不关心主机报头是否正确。
发布于 2011-06-16 10:53:38
我花了一段时间才弄明白的一件事是,使用'http‘来访问代理,即使你试图通过代理连接到https服务器。这对我使用Charles (osx协议分析器)很有效:
var http = require('http');
http.get ({
host: '127.0.0.1',
port: 8888,
path: 'https://www.google.com/accounts/OAuthGetRequestToken'
}, function (response) {
console.log (response);
});
发布于 2014-08-04 23:58:14
我想我应该添加我发现的这个模块:https://www.npmjs.org/package/global-tunnel,它对我来说工作得很好(只需下面的代码就可以立即与我的所有代码和第三方模块一起工作)。
require('global-tunnel').initialize({
host: '10.0.0.10',
port: 8080
});
这样做一次,应用程序中的所有http (和https)都会通过代理。
或者,调用
require('global-tunnel').initialize();
将使用http_proxy
环境变量
https://stackoverflow.com/questions/3862813
复制相似问题