Tag: 代理

为什么https.Agent在通过node-http-proxy进行代理时会抛出parsing错误?

我想通过http.Agent和https.Agent在我的node-http-proxy应用程序中启用连接池的使用。 为此,我build立了一个安全代理,如下所示: const secureAgent = new https.secureAgent({ keepAlive: true }); (为了简洁起见,我已经补充了互补的http代理。) 我创build一个代理服务器,如下所示: const proxy = httpProxy.createProxyServer({}); 最后,我在Connect中间件中代理请求,如下所示: proxy.web(req, res { agent: isSecure ? secureAgent : agent, target: …, secure: false, }); 这似乎适用于大多数请求,但每隔几分钟我会看到一个如下所示的错误: { "message": "Parse Error", "stack": "Error: Parse Error\n at TLSSocket.socketOnData (_http_client.js:411:20)\n at emitOne (events.js:96:13)\n at TLSSocket.emit (events.js:191:7)\n at readableAddChunk (_stream_readable.js:178:18)\n at TLSSocket.Readable.push (_stream_readable.js:136:10)\n […]

代理服务器后面的nodejs的简单示例

下面是一个简单的nodejs脚本,用于将节点作为https客户端与外部世界进行交互。 你如何修改它,所以当你在像http://10.10.10.10:8080这样的公司代理运行时,你不会得到“ECONNREFUSED”错误? var https = require('https'); var options = { hostname: 'encrypted.google.com', port: 443, path: '/', method: 'GET' }; var req = https.request(options, function(res) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); res.on('data', function(d) { process.stdout.write(d); }); }); req.end(); req.on('error', function(e) { console.error(e); }); —-更新— 我想出了如何使用npm'request'包( https://github.com/mikeal/request )。 仍然想知道如何用香草节点库做到这一点。 var request = require('request').defaults({proxy:'http://my.proxy.server:8080', agent:false}); request('https://www.google.com', function […]

从API w / Express http-proxy存储令牌

我正在设置一个通用的React应用程序,并以此项目为基础。 我成功地代理请求(使用http代理 )到我的Laravel后端。 不过,我是Nodejs的新手,我不知道如何从代理服务器安全地存储JWT到客户端的最佳方法。 我最初的想法是将标记存储到localStorage,但问题是快速服务器将无法访问它。 所以我的下一个猜测是将其存储为一个cookie,但我不知道如何将其存储在客户端,或将其作为所有传出请求的头部(另外,我可能需要某种csrf中间件)。 那么,如何操纵我的api服务器的响应,将一个令牌放置在客户端设置的cookie中,然后将其用作所有api请求的载体令牌? // server.js const targetUrl = 'http://' + config.apiHost + ':' + config.apiPort; const app = new Express(); const server = new http.Server(app); const proxy = httpProxy.createProxyServer({ target: targetUrl, changeOrigin: true }); // Proxy to Auth endpoint app.use('/auth', (req, res) => { // on a successful login, i want […]

如何创build一个深度代理?

我如何创build一个深度/recursion的代理 ? 具体来说,我想知道每当一个属性被设置或修改在对象树中的任何地方。 这是迄今为止我所得到的: function deepProxy(obj) { return new Proxy(obj, { set(target, property, value, receiver) { console.log('set', property,'=', value); if(typeof value === 'object') { for(let k of Object.keys(value)) { if(typeof value[k] === 'object') { value[k] = deepProxy(value[k]); } } value = deepProxy(value); } target[property] = value; return true; }, deleteProperty(target, property) { if(Reflect.has(target, property)) { […]

如何检测用户取消请求

我正在通过编写一个非常基本的http / webcaching代理尝试Node.js,并击中了我没有设法突破的东西。 假设我有一个非常基本的代理function(侦听请求,将其传送到外部服务器,等待响应,将其传回客户端),如何检测客户端(Web浏览器)何时取消请求? 当用户在他的浏览器上点击“Stop”/ Esc时,浏览器不会向我发送任何“请求”或信息,并且在“响应”连接结束时没有被调用时附加callback。 这是我的意思: http.createServer (clientRequest, clientResponse) { var client = http.createClient (port, hostname); var request = client.request (method, url, headers); request.addListener ('response', function(response){ response.addListener ('data', function(chunk){ // forward data to clientResponse.. } response.addListener ('end', function(){ // end clientResponse.. } }); clientResponse.addListener('end', function(){ // this never gets called 🙁 // I want […]

使用基本身份validation标头向外部API表示API代理请求

我已经build立了一个API使用node.js和expression。 但我需要能够代理一些特定的路由到外部服务器的请求,并显示从外部服务器响应请求的clint。 但是我也需要转发客户端发送的基本身份validation请求。 我曾尝试使用请求模块,如: app.get('/c/users/', function(req,res) { //modify the url in any way you want var newurl = 'https://www.external.com' request(newurl).pipe(res), }) 但似乎不发送基本的身份validation标题,因为我得到“403禁止”从外部服务器(www.external.com) 请求正在做,看起来像: GET http://example.se:4000/c/users/ HTTP/1.1 Accept-Encoding: gzip,deflate X-version: 1 Authorization: Basic bmR4ZHpzNWZweWFpdjdxfG1vcmV1c2*******= Accept: application/json Host: example.se:4000 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 如果我做的是完全相同的请求,但直接对www.external.com,所以有一些问题,当在代理节点。

npm代理设置转义'\'字符

我在公司代理后面,我需要将设置设置为npm。 唯一的问题是我的用户名包含一个\字符。 代理设置应如下所示: http://PREFIX\username:password@proxy.company.com:port但最终结果如下所示: http://prefix/username:password@proxy.company.com:port这是完全错误的。 将%5C而不是\不起作用。 也不把用户名和密码,或整个url在"" 。 我知道这个问题已经被问了很多次了,但是没有一个解决scheme为我做了。 我在一台Windows机器上。 如果您有任何build议,我将不胜感激。

在node.js中调用https Web服务(在代理后面)

我正在尝试从node.js调用https web服务。 我在一个代理的后面,所以我提供代理和端口的凭据与选项一起。 但是我收到以下错误 [Error: 2060:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol :openssl\ssl\s23_clnt.c:683: ] 以下是我试图调用https web服务的代码片段: var https = require('https'); var username = 'username'; var password = 'password'; var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64'); var data = ''; var options = { hostname: 'proxy', port: 8080, path: 'https://crm.zoho.com/crm/private/json/Leads/getMyRecords?authtoken=11111tsvs26677026bcba45ae3f&scope=crmapi', headers: { "Proxy-Authorization" : auth […]

在代理之后使用node-gcm

我正在使用node-gcm向Android发送推送通知。 每当node运行在代理之后,gcm就不再工作了。 我怎样才能告诉gcm使用代理? var sender = new gcm.Sender('XXX'); var registrationIds = []; registrationsIds.push('YYY'); message.addDataWithObject({ message: 'New message! Tap to reply.', title: "Mew Message" }); sender.send(message, registrationIds, 4, function (err, resultmsg) { console.log(resultmsg); … }); 感谢最好,Marc

Node.js HTTP代理修改主体

我想要编程的Node.js http代理将能够修改响应正文。 到目前为止, http = require('http'), httpProxy = require('http-proxy'); var proxy = httpProxy.createProxyServer(); http.createServer( function (req, res){ //here I want to change the body I guess proxy.web(req, res, { target: req.url }); }).listen(8013); 我试图使用res.write() ,但它给了我一个错误“发送后无法设置标题”。 那么我不想改变头,我想改变身体。 我如何改变身体? 任何build议将不胜感激。