在NodeJs中的response.writeHead和response.end

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. 任何人都可以解释我为什么要在createServer方法中调用writeHeadend方法。
  2. 在createServer方法中传递的options对象的主要目的是什么?

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

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

 function handleRequest(req, res) { res.writeHead(200); res.end("hello world\n"); } https.createServer(options, handleRequest).listen(8000); 

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

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

在你的代码中, writeHead()被调用来写入响应的头部,应用程序将服务于客户端。 end()方法都将响应的内容发送给客户端,并向服务器发送响应(标头和内容)已完全发送的信号。 如果你仍然要发送任何东西,你应该调用res响应对象的write()方法。

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

您可以在Node.js API文档的关于response.writeHead()方法的这一节中find更多信息。
您可以在Node.js API文档的关于https.createServer()方法的这一节中find更多信息。

response.writeHead(200)发送一个应答头给请求。 状态码是一个3位数的HTTP状态码,如404。

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

如果你在调用这个函数之前调用了response.write()或者response.end(),那么隐式的/可变的头文件将被计算出来并且为你调用这个函数。

据我所知,如果你不把response.end()结束,那么你的网页将继续加载,因此response.end()用于告诉服务器数据已经加载