Tag: http

http模块上的node.js response.writeHead

我正在实现我自己的http模块。 正如我正在阅读官方的node.js http模块API,我不明白一些事情: 如果用户正在使用response.writeHead(statusCode, [reasonPhrase], [headers])函数,那么头文件是否应该被写入套接字,或者是第一次被保存为对象的成员? 然后只写了.end()函数之后? 当用户不使用writeHead()时应该使用的隐式标题的含义是什么? 他们应该提前? 如果用户没有设置它们? 应该是什么行为? 谢谢

在node.js中redirect到不同的位置和端口

要将用户redirect到不同的页面,我们通常会: res.writeHead(302, { Location: '/test' }); res.end(); 如果我想在不同的端口上redirect他,该怎么办? 我试图添加一个字段“端口”,但似乎没有工作。

使用带有http分块传输的报头。 如何使用它设置cookie

使用预告片我想在页面stream式传输开始后设置一个cookie。 下面的代码尝试设置cookie。 它似乎返回正确的响应,但没有在浏览器中设置cookie(ff和chrome)。 var express = require('express'), http = require('http'), app = express(), server; app.use(app.router); app.all('*', function(req, res) { res.setHeader('Trailer', 'Set-Cookie'); res.setHeader('Content-Type', 'text/plain'); res.write("hi this is ogkla"); res.addTrailers({'Set-Cookie': "val=ogkla"}); res.end(); }); server = http.createServer(app).listen(80); module.exports = server; 响应 curl -iv –raw 'http://localhost/' * Adding handle: conn: 0x7fd87180aa89 * Adding handle: send: 0 * Adding handle: […]

angularJS http GET参数在服务器上未定义

我在我的controller.js文件中有这块代码 $http({ method: 'GET', url: '/getGuestList', params: {exhibitorID: 1} }) 基本上,应该让所有参展商ID为1的参展商的客人。 在服务器端,我已经尝试loggingreq.body.params和req.body.exhibitorID但他们都没有定义。 我只是熟悉angularjs,我不知道我错过了什么。 您的帮助将非常感激。

Chrome不会渲染分块的json响应

我想做一个stream式端点,不断发送一个json对象。 我曾尝试使用块传输编码,并能成功地使所有的浏览器(铬,火狐,Safari)呈现从服务器发送的数据,如果是文本/ HTML或文本/纯文本。 但是,当我使用application / json作为内容types时,它在chrome上不起作用。 代码如下: var http = require('http'); http.createServer(function(request, response){ response.setHeader('Connection', 'Transfer-Encoding'); response.setHeader('Transfer-Encoding', 'chunked'); response.setHeader('Cache-Control', 'no-cache'); // response.setHeader('Content-Type', 'application/json'); response.setHeader('Content-Type', 'text/html'); setInterval(function(){ response.write('test </br>'); // response.write('{"test": "test"}'); }, 10); }).listen(8000); 上面的代码正常工作,但不能使它与应用程序/ jsontypes。 我错过了什么吗?

如何从upcdatabase请求中提取数据

在我的项目中,我不得不对upcDatabase.com做一个请求,我正在使用nodeJS,我从服务器得到答案,但是我不知道如何提取数据,这是我的代码的重要部分: module.exports = function (http,upc){ var upc_ApiKey = "XXX", url = "http://upcdatabase.org/api/json/"+upc_ApiKey+'/'+upc; http.get(url,function(resp){ // my code to read the response 我没有得到任何错误,但resp是一个大Json,我不知道在哪里可以find数据

Node.js如何处理未封闭的HTTP响应

考虑一个简单的快速应用程序: app.get '/hang', (req, res) -> console.log 'Request ', n n += 1 # res.send 200 哎呀,我不小心把res.send了出来,好吧,让我们看看会发生什么! 如果我用浏览器打开/hang ,它就在那里旋转,这是有道理的。 没有send我们不closures连接(正确的假设?)。 让我们来看看如果我们用一堆同时连接进行连接 ,会发生什么情况: $ ab -n 1000 -c 1000 http://localhost:3000/hang Benchmarking localhost (be patient) apr_socket_recv: Connection reset by peer (104) 该应用程序设法打印出几百个Request n ,然后就卡住了。 我的问题是: 这里发生了什么事? 这些连接最终会closures吗? 要么: 我的服务器现在是否重新启动? 额外: 您可以将-r传递给ab以使其忽略套接字错误。 当我使用的时候,我开始看到ab列出了一些要求完成: Completed 100 requests Completed 200 […]

从node.js上传图片到twitter API

我试图发布一个图像到Twitter的API,V1.1我已经尝试过所有的例子,似乎没有任何东西可以发布。 包括使用Oauth在Node.js中将图像发布到twitter 我正在使用那里提到的oauth库,我也有jsOauth,我想我会按照https://gist.github.com/lukaszkorecki/1038408 什么都没有起作用,在这一点上我开始失去希望,甚至可以做到这一点。 function postStatusWithMedia(status, file) { var err = new Object(); if(fs.existsSync(file) === false) { err.message = "File not found :("; parseTwitterError(err); } else { var oauth = OAuth(options = { "consumerKey": consumer_key, "consumerSecret": consumer_secret, "accessTokenKey": access_token, "accessTokenSecret": access_token_secret }); callbacks = { onSuccess : function() { console.log('upload worked!') }, onFailure : function() […]

我怎么能得到我实际发送的HTTP请求头在node.js http请求

这是我的简化代码: var request = http.request(options); request.on('response', function( res ) { console.log("response received"); }); request.end(); 我想打印出实际发送的请求标题(我假设该节点自己添加一些)我怎样才能得到它们?

nodejs http response.write:可能是内存不足吗?

如果我有以下代码每10毫秒发送一次数据到客户端: setInterval(function() { res.write(somedata); }, 10ms); 如果客户端收到数据的速度很慢,会发生什么? 请问服务器出现内存不足的错误? 编辑:实际上连接保持活着,服务器无休止地发送jpeg数据(HTTP多部分/ x混合replace标题+正文+标题+正文…..) 由于node.js response.write是asynchronous的, 所以一些用户猜测它可能会在内部缓冲区中存储数据,并等到低层告诉它可以发送, 所以内部缓冲区会增长,对吗? 如果我是对的,那么如何解决呢? 问题是node.js没有通知我什么时候发送一个写入数据。 换句话说,我不能以这种方式告诉用户在理论上没有“内存不足”的风险,以及如何解决这个问题。 更新:通过user568109给出的关键字“drain”事件,我研究了node.js的来源,得出结论: 这真的会造成“内存不足”的错误。 我应该检查response.write(…)=== false的返回值,然后处理响应的“漏”事件。 http.js: OutgoingMessage.prototype._buffer = function(data, encoding) { this.output.push(data); //————-No check here, will cause "out-of-memory" this.outputEncodings.push(encoding); return false; }; OutgoingMessage.prototype._writeRaw = function(data, encoding) { //this will be called by resonse.write if (data.length === 0) { return […]