我已经阅读了这篇文章,并意识到我想要做的事很糟糕,但是我有一个客户端在发布数据时未添加Content-Length或Transfer-Encoding。我可以用curl模拟请求:
curl -H "Accept:" -H "Content-Type:" -H "Expect:" -H "Content-Length:" -d 'hello=world' http://localhost:1337/post
并添加Transfer-Encoding标头
curl -H "Accept:" -H "Content-Type:" -H "Expect:" -H "Content-Length:" -H "Transfer-Encoding: chunked" -d 'hello=world' http://localhost:1337/post
产生预期的POST数据。
我正在使用带有以下代码的节点运行服务器:
var http = require('http');
var server = http.createServer(function (req, res) {
req.on('data', function (chunk) {
console.log('chunk', chunk.toString());
});
req.on('end', function () {
res.end();
});
}).listen(1337, '127.0.0.1');
是否有可以拦截请求并添加标头以便可以访问数据的地方,或者可以使用其他方法/事件获取POST数据?
谢谢,Shane Holder
对于您要做什么,我还不是100%清楚,但是我认为我可以在这里为您指出一些有用的方向:
是否有可以拦截请求并添加标头以便可以访问数据的地方,或者可以使用其他方法/事件获取POST数据?
所以首先要知道的是,HTTP模块都可以作为源代码使用。而且它似乎主要是用Javascript编写的。因此,如果您不介意进行复制粘贴,则可能会对此稍作修改。
另一个有用的窍门是HTTP模块只是用于处理HTTP的套接字的充实实现。如果确实需要,可以降低套接字级别并处理所有传入的字节。这应该使您可以执行所需的所有操作。同样,您可能需要查看一些原始代码。
或者,您可以不考虑危险而只修改标题,并在代码中添加一个大的红色标记注释,以警告可能出现的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句