10

我正在创建一个页面,其中有一些数据被另一台设备解析。我以前用 php 做这个,但我把它移到 node.js 上。我需要从页面中删除所有标题,所以我只有我的输出。此输出是对 GET 请求的响应。

目前我有

HTTP/1.1 200 OK
Date: Wed, 11 Sep 2013 11:54:14 GMT
Connection: close

My output

我需要它来显示

My output
4

4 回答 4

23

通常,您可以使用 Express (node.js) 中的 Response 对象的 API 来删除标头,但是,其中一些是 HTTP 规范所要求的,并且应该始终存在。

Date 标题是这样一个必需的。见这里:https ://stackoverflow.com/a/14490432/1801

第一行 ( HTTP/1.1 200 OK) 不是标头 - 它是 HTTP 协议的一部分,每个响应都应以它开头。否则浏览器将不知道如何处理响应。

如果要删除其他自定义标头,可以这样做:

app.get('/test', function (req, res) {
    var body = "some body";
    res.removeHeader('Transfer-Encoding');
    res.removeHeader('X-Powered-By');
    res.end(body);
});
于 2013-09-11T13:32:49.680 回答
2
app.use(function (req, res, next) {
    res.removeHeader("x-powered-by");
    res.removeHeader("set-cookie");
    res.removeHeader("Date");
    res.removeHeader("Connection");
     next();
});

有关更多详细信息,请查看此文档以获得解释所有与 http 标头相关的查询的最佳方式:: Express (node.js) http 标头文档

于 2020-09-01T11:29:11.847 回答
1

Express 不会这样做,因为 Express 用于 HTTP。您要求的不是 HTTP,因为它不遵循某些 RFC。要做你想做的事,你必须绕过快递。监听端口,解析来自嵌入式设备的 GEt 请求,发送你想要的数据。

于 2015-02-03T19:42:02.517 回答
0

如果可以更改其他设备上的代码,则更标准的解决方案是设备忽略 HTTP 标头并仅解析正文。

于 2018-09-19T18:53:33.327 回答