从express.js中删除所有标头

时间:2013-09-11 11:55:24

标签: javascript node.js http express http-headers

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

目前我有

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

My output

我需要它才能显示

My output

4 个答案:

答案 0 :(得分:14)

通常,您可以使用Express(node.js)中的Response对象的API来删除标头,但是,其中一些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);
});

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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 header docs