Node.js HTTP标头

设置标头

你可以使用response.setHeader(name,value)在响应中显式排队任何HTTP标头。

响应中的Content-Type是我们可以设置的标头,以通知客户端如何解释来自服务器的数据。

例如,如果你向客户端发送HTML文件,你应将Content-Type设置为text/html,可以使用以下代码:

  1. response.setHeader("Content-Type", "text/html");

Content-Type标头的值的正式名称称为MIME类型。

几个关键内容类型的MIME类型如下表所示。

名称MIME类型
超文本标记语言(HTML)text/html
级联样式表(CSS)text/css
JavaScriptapplication/javascript
JavaScript对象表示法(JSON)application/json
JPEG图像image/jpeg
便携式网络图形(PNG)image/png

有一个名为mime(npm install mime)的NPM包,你可以使用它从文件扩展名获取官方mime类型。

下表显示了如何使用它。

  1. var mime = require("mime");
  2. mime.lookup("/path/to/file.txt"); // => "text/plain"
  3. mime.lookup("file.txt"); // => "text/plain"
  4. mime.lookup(".TXT"); // => "text/plain"
  5. mime.lookup("htm"); // => "text/html"

你可以使用response.getHeader函数获取排队等待发送的标头:

  1. var contentType = response.getHeader("content-type");

你可以使用response.removeHeader函数从队列中删除标头:

  1. response.removeHeader("Content-Encoding");

仅发送标头

要显式发送标头并将响应移动到仅限身体模式,调用response.writeHead成员函数。

response.writeHead成员函数接收将被添加到使用response.setHeader排队的任何头的状态代码和可选头。

以下代码显示如何将状态代码设置为200,并设置用于提供HTML的Content-Type标头:

  1. response.writeHead(200, { "Content-Type": "text/html" });

请求流的关键成员

请求也是可读流。

当客户端想要将数据流式传输到服务器(例如,文件上传)时,这是非常有用的。

客户端HTTP请求分为头部和主体部分。

我们可以获得有关客户端请求HTTP标头的有用信息。

request.headers属性是一个JavaScript对象字面值的标头名称和值。

  1. console.log(request.headers);

要检查单个标头,请像任何其他JavaScript对象字面值一样索引此对象:

  1. console.log(request.headers["user-agent"]); // "curl/7.30.0"