Articles of http

为什么超时错误作为顶级中间件?

超时中间件: https : //github.com/expressjs/timeout#api似乎有用的挂起http请求超时。 但是,中间件文档提到使用它作为顶级中间件是不好的( https://github.com/expressjs/timeout#api ) 注意这个模块不推荐作为“顶级”中间件(即不build议用作app.use(timeout(5000)))。 任何想法为什么? 让我怀疑它是否应该在任何级别使用。

从远程服务器获取JSON文件(包含希伯来语值)并在Node.js中parsing它

我有一个dynamic的JSON文件托pipe在远程服务器(充当某种API),它也包含一些希伯来文字的值。 如何保存响应并parsing它为一个JSON对象? 这就是我迄今为止使用请求( https://www.npmjs.org/package/request ): var options = { url: 'http://www.AWEBSITEHERE.com/file.json', method: 'GET' }; function callback(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); // … } } request(options, callback); 而且这个代码在访问时给出以下错误: SyntaxError: Unexpected token ∩┐╜ at Object.parse (native) at Request.callback [as _callback] (C:\Sites\node\proj\routes\inde x.js:21:29) at Request.self.callback (C:\Sites\node\proj\node_modules\request\ request.js:122:22) at […]

Nodejs从一个nodejs服务器发送文件到另一个

如何模拟从一个nodejs服务器向另一个nodejs服务器发送多部分表单数据,第一台服务器上的自定义文件是从提交到第一台服务器的表单parsing的。

如何从node.js服务器发送二进制数据作为响应

我是mongodb的新手。 我用下面的代码片段存储二进制数据: var data = fs.readFileSync(path); var image = new mongodb.Binary(data); //open connection/collection var record = {picname: id, content: image }; collection.save(record, {safe: true}, function(err,result){ if(err) console.log(err.stack); });//save 我可以在db中看到logging大小。 有二进制数据。 logging大小也与文件大小相匹配。 很高兴。 现在,从mongo中获取相同的二进制数据,然后尝试发送它作为响应: var record = {picname: id}; collection.findOne(record, function(err,result){ if(err) console.log(err.stack); else { console.log('before read from db for download.'); //HOW TO READ IMAGE/BINARY DATA […]

修改node-http-proxy提供的内容

由于我代理的Web服务的一些限制,我不得不注入一些JS代码,以便它允许iframe访问父窗口并执行一些操作。 我用node-http-proxy构build了一个很好的代理系统。 然而,我花了不可估量的时间试图修改正在发送给用户的内容(在我自己,使用和谐等),没有任何成功。 我在这里发现了一些文章甚至是一些问题,但是所有这些都已经过时了,并且不再有用了。 我想知道如果有人能给我一个关于如何做到这一点的实例,因为我无法做到这一点,也许只是在这一点上是不可能的?

即使服务器返回redirect(3XX),HTTP客户端是否也向服务器发送请求主体?

我目前正在构build一个接收客户端上传(可能是大文件)的node.js express Web服务。 我有一个端点(我们称之为FOO),它为每个请求返回一个redirect,告诉客户端在哪里上传数据(我们称之为URL DEST)。 我担心客户端会将请求正文中的数据发送到FOO,即使FOO保证redirect。 我意识到端点FOO可以忽略请求体中的数据,但是我担心客户端正在上传数据两次。 一次到FOO,一次到DEST。 有谁知道这是否与HTTP客户端的行为一致? 如果是这样,有没有办法阻止HTTP客户端上传两次?

监控networking请求和响应的Node.js代理

我正在使用Nodejitsu的http代理来构build一个工具来监控networkingstream量。 httpProxy.createProxyServer({ target: 'http://localhost:9000' }) .listen(8000); util.puts('proxy server listening on port 8000'); http.createServer(function targetServer(req, res) { res.writeHead(302, { 'Location': req.headers.host }); util.puts('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); }) .listen(9000); util.puts('target server listening on port 9000'); 我想要做的是 代理从客户端(浏览器)传出的请求到我的目标服务器 将他们发送到我的目标服务器的原始目标url 在我的目标服务器上接收响应 将响应发送回客户端 基本上有一个中间人放置在客户端和目标服务器之间,所以我可以监控stream量。 但是,当我尝试这样做时,一旦我发出302请求,我得到一个ECONN错误。 Error: connect ECONNREFUSED at errnoException […]

NodeJS如何在networking模块中实现请求/响应

我是NodeJS的新手,正在使用“net”模块的项目。 我的问题是我们可以使用'networking'模块实现请求,响应模型,我们可以在HTTP模块中实现,也就是说,当用户在浏览器中inputlocalhost:端口号时,我可以向浏览器发送响应。 我可以使用HTTP实现相同的function,但无法理解“Net”和“HTTP”模块之间的基本区别: 我的“networking”模块代码是: var net = require('net'); var server = net.createServer(function (con) { con.on('data', function (data) { <some code> }); con.on('end', function () { console.log('nodeServer disconnected'); }); }); server.listen(8888, function () { console.log('nodeServer listening port:8888'); }); 以下是“HTTP”模块代码: var http = require("http"); var fs = require("fs"); http.createServer(function(req, res){ res.writeHead(200, { 'Content-Type': 'application/json', "Access-Control-Allow-Origin":"*" }); var […]

Node.js – 大量的发送请求到另一台服务器导致内存泄漏

我有一个节点的应用程序,使用restify大量的请求到另一台服务器。 随着请求数量的增加,内存不断增长,最终导致应用程序崩溃。 以下是我的代码的片段。 var restify = require('restify'); var client = restify.createStringClient({ url: "https://api-3t.sandbox.paypal.com/nvp" }); function makeRequest(cb) { counter++; client.post({ headers: null }, null, function(err, req, res, data) { if(err) { cb(err, req, res, data); } else { cb(null, req, res, data); } }); } function makeRequestCb(error,request,response,data){ counter++; console.log("result",counter); } setInterval(function(){ makeRequest(makeRequestCb) }, 1000); 在chrome中检查堆快照时,我发现“缓冲区”占用了大部分空间。 我也尝试使用'请求'模块而不是'restify'我在这里做错了什么。 […]

为什么我只能发送5个请求,如果我不听数据事件?

我发现了一些似乎与这个问题有关系的问题(例如: 为什么node.js一次只能处理6个请求? ),但是我仍然不能理解细节。 以下是我的情况。 首先,服务器的代码: var express = require ('express'), methodOverride = require('method-override'); var app = express(); app.use(methodOverride()); app.use(function(err, req, res, next) { console.error(err.stack); res.status(500); res.send({ error: err }); }); app.use('/', function(req, res, next) { res.header('Cache-control', 'no-cache'); res.header('Access-Control-Allow-Origin', '*'); next(); }); app.get('/OK/', function (req, res) { console.log(getTimestamp() + ' OK '); res.status(200).send("200"); }); app.listen(22222); function […]