Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Express.js应用程序中,如何获取源POST数据(原始字符串)?_Javascript_Node.js_Http_Post_Express - Fatal编程技术网

Javascript 在Express.js应用程序中,如何获取源POST数据(原始字符串)?

Javascript 在Express.js应用程序中,如何获取源POST数据(原始字符串)?,javascript,node.js,http,post,express,Javascript,Node.js,Http,Post,Express,我正在处理这样的POST请求: app.post('/somepage', function (req, res) { var post_data = req.body; }); 在这里,req.body已经是一个JavaScript对象(我尝试了console.log(req.body)并在服务器控制台中获得了[object object])。我想获取与HTTP请求一起发送的原始POST数据字符串。可能吗 注意:我使用这个中间件: app.use(express.json());

我正在处理这样的POST请求:

app.post('/somepage', function (req, res) {

    var post_data = req.body;

});
在这里,
req.body
已经是一个JavaScript对象(我尝试了
console.log(req.body)
并在服务器控制台中获得了
[object object]
)。我想获取与HTTP请求一起发送的原始POST数据字符串。可能吗

注意:我使用这个中间件:

app.use(express.json());
app.use(express.urlencoded());
app.post('/somepage',函数(req,res){


}))

这里有一个可能有效的解决方案:

/。。。
应用程序使用(功能(请求、恢复、下一步){
var缓冲区=“”;
请求开启(“数据”,功能(数据){
buffer+=data.toString();
}).on('end',function(){
req.bodyraw=缓冲区;
});
next();
});
使用(express.json());
app.use(express.urlencoded());
// ...
app.post('/somepage',函数(req,res){
var rawpost=所需的bodyraw;
});

这应该是安全的,因为json和urlencoded中间件会立即添加(数据)事件处理程序,但如果第一个中间件执行了
pause()
,并且json和urlencoded中间件执行了
resume()则会更好
当看到显式暂停的流时——这将保证不会丢失任何数据。

您正在搜索“主体解析器”中间件。您有多种选择来获取身体,包括作为or。

请不要猜测。1.它不起作用。(输出为
“[对象]”
)2。我需要原始源数据(在ToObject()转换之前)。如果愿意,我当然可以将对象转换为字符串。限制请求正文的大小是明智的。否则,可能会有人用垃圾填满你服务器的RAM并关闭应用程序。@josh3736我希望这只是为了临时/调试目的,而不是为了实际生产,但你是对的。在中间件堆栈的更高层应该有某种请求大小限制功能。在使用最新版本的express时,不应该提到这一点吗?因为我无法让这些关于收集原始数据的示例发挥作用。。也许我做错了什么:(
var post_data = req.body.toString();