Tag: 代理

在Node中代理请求

我需要能够通过我的节点服务器提供副本网站( www.google.com , www.facebook.com等任何网站)。 我find了这个库: https://github.com/nodejitsu/node-http-proxy 我在代理请求时使用了下面的代码: options = { ignorePath: true, changeOrigin: false } var proxy = httpProxy.createProxyServer({options}); router.get(function(req, res) { proxy.web(req, res, { target: req.body.url }); }); 但是,这种configuration会导致大多数站点发生错误。 根据网站,我会得到来自目标url的Unknown service错误,或者是一个Invalid host …沿着这些线的东西。 但是,当我通过 changeOrigin: true 我得到一个正常运行的代理服务,但我的用户的浏览器被redirect到他们的请求的实际url,而不是我的(所以如果req.body.url = http://www.google.com ,请求将转到http://www.google.com ) 我怎样才能让我的网站的url显示,但我可以完全复制正在显示的东西? 我需要能够添加一些JS文件到请求,我正在使用另一个库。 为了澄清,这里是问题的总结: 用户请求具有url属性的资源 这个url的格式是http://www.example.com 在www.pv.com运行的我的服务器需要能够引导用户访问www.pv.com/http://www.example.com 与www.pv.com/http://www.example.com一起返回的HTTP响应是http://www.example.com的完整表示forms。 我需要能够添加我自己的Javascript / HTML文件在这个回应以及。

如何使用PROXY协议获取客户端的真实IP地址?

AWS刚刚为PROXY协议 添加了对ELB的支持, PROXY协议封装了TCPstream,并添加了客户端IP地址(如代理所示),以便后端服务器可以访问客户端的IP(因为否则它只会看到ELB的IP) 。 我知道ELB可以在HTTP(S)模式下运行,ELB插入一个X-Forwarded-For头,但是我在TCP模式下运行我的ELB,这样我就可以通过SPDY服务我的站点了。 我如何修改我的node.js应用程序(使用Express)使用PROXY协议?

通过node-http-proxy持久基于cookie的会话

我有一个简单的基于Express的Node.js Web服务器,用于开发JavaScript应用程序。 我将服务器设置为使用node-http-proxy来代理应用程序对运行在不同域和端口上的Jetty服务器的API请求。 直到我开始遇到会话pipe理问题时,此设置一直在完美运行。 在authentication之后,应用服务器返回一个带有代表服务器会话的authentication令牌的cookie。 当我从我的文件系统(file://)运行JS应用程序时,我可以看到,一旦客户端收到cookie,就会在所有后续的API请求中发送。 当我在节点服务器上运行JS应用程序,并通过node-http-proxy(RoutingProxy)代理API调用时,请求标头永远不会包含cookie。 有什么我需要手动处理,以支持通过代理这种types的会话持久性? 我一直在挖掘node-http-proxy代码,但是由于我是Node的新手,所以这个代码有点过头了。 https://gist.github.com/2475547或者: var express = require('express'), routingProxy = require('http-proxy').RoutingProxy(), app = express.createServer(); var apiVersion = 1.0, apiHost = my.host.com, apiPort = 8080; function apiProxy(pattern, host, port) { return function(req, res, next) { if (req.url.match(pattern)) { routingProxy.proxyRequest(req, res, {host: host, port: port}); } else { next(); } } […]

无论如何设置passportjs的代理设置?

目前,我正在使用基于expressjs和使用passportjs( http://passportjs.org/ )进行yammer身份validation的sails框架。 在公司代理后面的服务器上部署节点应用程序时遇到问题。 无法连接到yammer进行OAuth2身份validation。 错误如下: 错误:无法获取访问令牌(错误:连接ETIMEDOUT) at /root/rlps/node_modules/passport-yammer/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:125:38 在/root/rlps/node_modules/passport-yammer/lib/passport-yammer/strategy.js:72:20 在ClientRequest。 (/root/rlps/node_modules/passport-yammer/node_modules/passport-oauth/node_modules/oauth/lib/oauth2.js:129:5) 在ClientRequest.EventEmitter.emit(events.js:95:17) 在CleartextStream.socketErrorListener(http.js:1547:9) 在CleartextStream.EventEmitter.emit(events.js:95:17) 在Socket.onerror(tls.js:1437:17) 在Socket.EventEmitter.emit(events.js:117:20) 在net.js:441:14 在process._tickDomainCallback(node.js:459:13) 我相信这是因为代理阻塞了路。 我试图设置一切环境值(如http_proxy和https_proxy),但似乎代码不承认他们,需要在passportjs中的某处configuration它。 那么,在passportjs中设置代理设置或在nodejs中解决这个代理问题的任何好方法?

代理与nodejs

我开发一个webapp,对api。 由于api没有在本地系统上运行,我需要代理请求,所以我不运行跨域问题。 有没有一个简单的方法来做到这一点,所以我的index.html将从本地和所有其他的GET,POST,PUT,DELETE请求发送到xyz.net/apiEndPoint。 编辑: 这是我的第一个解决scheme,但没有工作 var express = require('express'), app = express.createServer(), httpProxy = require('http-proxy'); app.use(express.bodyParser()); app.listen(process.env.PORT || 1235); var proxy = new httpProxy.RoutingProxy(); app.get('/', function(req, res) { res.sendfile(__dirname + '/index.html'); }); app.get('/js/*', function(req, res) { res.sendfile(__dirname + req.url); }); app.get('/css/*', function(req, res) { res.sendfile(__dirname + req.url); }); app.all('/*', function(req, res) { proxy.proxyRequest(req, res, { […]

Bower错误隧道套接字无法build立,原因=parsing错误

我背后的公司代理,我已经把我的HTTP_PROXY和HTTPS_PROXY env var设置为 http://username:password@proxyname:port/ 做console.log(process.env)输出这些var正确。 npm正在工作,我得到了它的凉亭,它(凉亭)工作正常,但自从我重新启动Windows XP,我总是得到: bower error tunneling socket could not be established, cause=Parse Error 我不认为在代理方面有什么新的东西。 我已经尝试重新设置这些variables,重新开始一切…任何消化?

我如何在phantomjs中设置代理

这https://www.npmjs.com/package/phantom#functionality-details页面说: 您还可以通过指定其他参数phantom.create()将命令行开关传递给phantomjs进程,例如: phantom.create '–load-images=no', '–local-to-remote-url-access=yes', (page) -> 或者通过在选项*对象中指定它们: phantom.create {parameters: {'load-images': 'no', 'local-to-remote-url-access': 'yes'}}, (page) -> 这些例子只在咖啡脚本中,也暗示了创build函数可以采用 create('string',function) 要么 create([object object],function) 但真正的第一个参数是预期的function! 我真的想尝试http://phantomjs.org/api/command-line.html我可能有错误的想法,但对我来说,它看起来像他们可以用于创buildfunction(就在你做createPage之前),上午我错了? 我已经尝试了几件事情,最合乎逻辑的是: var phantom = require('phantom'); phantom.create(function(browser){ browser.createPage(function(page){ page.open('http://example.com/req.php', function() { });},{parameters:{'proxy':'98.239.198.83:21320'}});}); 所以页面被打开。 我知道这一点,因为我正在使req.php保存$ _SERVER对象到一个TXT垫,但是,REMOTE_ADDR和REMOTE_PORT头不是我已经设置的代理。 他们没有效果。 我也试过了: {options:{'proxy':'98.239.198.83:21320'}} 由于文档称这个对象的选项*对象*见上面^ 和 '–proxy=98.239.198.83:21320' 我也通过幻影模块挖掘find创buildfunction。 它不是写在JS我至less看不到它。 它必须在C ++中。 它看起来像这个模块已经更新,但模块内部的例子看起来像旧代码。 我该怎么做呢? 编辑: var phantom = require('phantom'); phantom.create(function(browser){ […]

NPM模块安装错误

我得到错误:隧道套接字无法build立,导致= getaddrinfo ENOTFOUND而试图在node.js中安装模块。 这似乎有一些代理错误。我检查了浏览器设置,代理被禁用。 但是,当我在命令提示符检查npmconfiguration获取代理,得到192.168.98.5:8080。 如何禁用这个?

应提供反向代理标题

我使用节点应用程序中以下模块的revese代理 https://github.com/nodejitsu/node-http-proxy 我的问题是,我是否需要修改标题反向代理的状态像标准工作? http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

从代理后面运行的网站访问web服务

我正在devise一个使用烬的网站,并在节点上expression。 它运行在服务器上,说:SERVER_1。 我有几个webservices运行在另一台服务器,说:SERVER_2。 那是: SERVER_1中的网站和SERVER_2中提供的webservices SERVER_1位于代理服务器的后面。 我试图从SERVER_1访问webservices: SERVER_1 =====[PROXY]===> SERVER_2 当我从SERVER_1进行AJAX web服务调用时,我收到: NetworkError: 500 Internal Server Error 但是,我能够通过浏览器成功检索值。 只有通过AJAX代码,我正在检索networking500错误 。 另外为了testing,我删除了我的代理服务器设置: SERVER_1 =====> SERVER_2 我可以通过AJAX代码和浏览器成功访问所有这些Web服务。 如果我有他们之间的代理服务器: SERVER_1 =====[PROXY]===> SERVER_2 我越来越 – NetworkError:500内部服务器错误 我想知道从代理服务器上运行的网站访问第三方Web服务的过程吗? 附加信息: 已经修复跨域Web服务访问问题(网站运行在一个服务器和Web服务运行在一些其他不同的服务器与不同的端口),我使用HTTP代理 NPM,我的代码如下: var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); var httpProxy = […]