Node.js HTTP标头
设置标头
你可以使用response.setHeader(name,value)在响应中显式排队任何HTTP标头。
响应中的Content-Type是我们可以设置的标头,以通知客户端如何解释来自服务器的数据。
例如,如果你向客户端发送HTML文件,你应将Content-Type设置为text/html,可以使用以下代码:
- response.setHeader("Content-Type", "text/html");
Content-Type标头的值的正式名称称为MIME类型。
几个关键内容类型的MIME类型如下表所示。
名称 | MIME类型 |
---|---|
超文本标记语言(HTML) | text/html |
级联样式表(CSS) | text/css |
JavaScript | application/javascript |
JavaScript对象表示法(JSON) | application/json |
JPEG图像 | image/jpeg |
便携式网络图形(PNG) | image/png |
有一个名为mime(npm install mime)的NPM包,你可以使用它从文件扩展名获取官方mime类型。
下表显示了如何使用它。
var mime = require("mime");
mime.lookup("/path/to/file.txt"); // => "text/plain"
mime.lookup("file.txt"); // => "text/plain"
mime.lookup(".TXT"); // => "text/plain"
mime.lookup("htm"); // => "text/html"
你可以使用response.getHeader函数获取排队等待发送的标头:
- var contentType = response.getHeader("content-type");
你可以使用response.removeHeader函数从队列中删除标头:
- response.removeHeader("Content-Encoding");
仅发送标头
要显式发送标头并将响应移动到仅限身体模式,调用response.writeHead成员函数。
response.writeHead成员函数接收将被添加到使用response.setHeader排队的任何头的状态代码和可选头。
以下代码显示如何将状态代码设置为200,并设置用于提供HTML的Content-Type标头:
- response.writeHead(200, { "Content-Type": "text/html" });
请求流的关键成员
请求也是可读流。
当客户端想要将数据流式传输到服务器(例如,文件上传)时,这是非常有用的。
客户端HTTP请求分为头部和主体部分。
我们可以获得有关客户端请求HTTP标头的有用信息。
request.headers属性是一个JavaScript对象字面值的标头名称和值。
- console.log(request.headers);
要检查单个标头,请像任何其他JavaScript对象字面值一样索引此对象:
- console.log(request.headers["user-agent"]); // "curl/7.30.0"