如果我在不提供任何标题或数据的情况下调用response.end(),NodeJS会发生什么?

时间:2012-07-29 07:51:12

标签: node.js

如果我在收到请求而没有提供任何数据,调用response.write()或调用response.writeHead()时调用response.end(),NodeJS会发生什么?我从两个角度对答案感到好奇:

1)服务器角度 - 这实际上是从nodeJS中的后端堆栈或堆中取出一些东西来释放一些资源吗?还是会发生完全不同的事情?

2)客户端视角 - 如果这是来自ajax请求而不希望收到任何数据作为响应,是否会出现任何问题?

2 个答案:

答案 0 :(得分:6)

这里显而易见的事情就是尝试它。 Node.js代码:

var http = require('http');
http.createServer(function (req, res) {
  res.end();
}).listen(1337, '127.0.0.1');

从服务器的角度来看,在那里添加数据/自定义标题没有什么不同。

从客户端的角度来看,给我空的响应体,带标题:

Connection:keep-alive
Date:Sun, 29 Jul 2012 07:58:51 GMT
Transfer-Encoding:chunked

hello world example的区别在于缺少Content-Type标头且响应正文为空,就是这样。

答案 1 :(得分:2)

1)放弃与请求和响应相关的所有资源(可用于垃圾收集)

2)节点发出一个带有默认标题和空体的响应。这纯粹取决于客户如何处理。在大多数情况下,客户端会将默认标头视为不完整,但如果没有响应主体,则没有其他选择。