NodeJs中的response.writeHead和response.end

时间:2013-01-09 17:35:15

标签: node.js

var https = require('https');
var fs = require('fs');

var options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
  cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);
  1. 任何人都可以解释我为什么要拨打writeHeadend createServer方法中的方法。
  2. createServer中传递的options对象的主要用途是什么 方法

5 个答案:

答案 0 :(得分:32)

writeHeadend的调用不是在createServer方法中完成的,而是在回调中。

如果将回调拆分为单独的函数,则会更容易一些:

function handleRequest(req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

https.createServer(options, handleRequest).listen(8000);

所以我们在这里定义一个handleRequest函数,然后将其传递给createServer调用。现在,只要我们创建的node.js服务器收到传入请求,它就会调用我们的handleRequest方法。

这种模式在JavaScript中很常见,是node.js异步事件处理的核心。

答案 1 :(得分:13)

在您的代码中,调用writeHead()来编写响应的标头,应用程序将提供给客户端。 end()方法都将响应的内容发送给客户端,并向服务器发出完全发送响应(标题和内容)的信号。如果您仍然要发送任何其他内容,则应改为调用write()响应对象的res方法。

options JSON对象是您可以使用的修饰符,用于覆盖createServer()方法的默认行为。在你的代码的情况下:
+键:用于SSL的私钥(默认为空)
+ cert:要使用的公共x509证书(默认为null)

您可以在this section关于response.writeHead()方法的Node.js API文档中找到更多信息。
您可以在this section的Node {j} API文档中找到有关https.createServer()方法的更多信息。

答案 2 :(得分:2)

response.writeHead(200)向请求发送响应标头。状态代码是一个3位HTTP状态代码,如404.

此方法只能在消息上调用一次,并且必须在调用response.end()之前调用它。

如果在调用之前调用response.write()或response.end(),则会计算隐式/可变标题并为您调用此函数。

答案 3 :(得分:0)

据我所知,如果你没有将response.end()放在最后,那么你的网页将继续加载,因此response.end()用于告诉服务器数据已被加载

答案 4 :(得分:-1)

res.writeHead方法用于向浏览器返回状态代码,如果它是客户端状态代码或服务器端状态代码,则浏览器将抛出错误。 res.end方法是确保在嵌套代码或其他情况下,在准备好响应之前不返回响应。

options对象的目的是确保在 前声明该页面已使用https加密。