2015-02-17 2 views
0
var http = require('http'); 

http.createServer(function (req, res) { 
    if (req.method === 'POST') { 
     // How to obtain the body buffer? 
    } 
}); 

Я знаю, что могу читать поток данных, например.Как получить буфер тела запроса?

var requestBody = ''; 
req.on('data', function (data) { 
    requestBody += data; 
}); 
req.on('end', function() { 
    console.log(requestBody); 
}); 

Я предполагаю, что есть способ получить доступ к буферу данных напрямую или самостоятельно построить его?

Целью является перенаправление HTTP-запроса (выполнение MITM для целей отладки).

+0

Если вы просите способ получить доступ к основному буферу в модуле 'http' Я уверен, что это возможно. Я даже задаюсь вопросом, зачем нужно что-то делать, события «данных» должно быть достаточно. –

+0

«Я предполагаю, что есть способ получить доступ к буферу данных напрямую или самостоятельно построить его?» Вы сами строите это, слушая события «данные» и «конец», как вы уже отметили. Там нет «буфера данных» - данные транслируются, а модель событий - это то, как вы попадаете в этот поток. – Joe

+0

@ Джо прав. Как я узнал по Freenode, 'req' сам это поток данных, http://nodejs.org/api/stream.html. По какой-то причине это не было очевидно для меня. – Gajus

ответ

0

Я рекомендую вам, если вы хотите, используйте экспресс + bodyParser, что простой и эффективный, например:

var express = require('express'); 
var app  = express(); 
app.use(bodyParser.json({limit:1024*1024})); 

app.post('/', function(req, res){ 
    console.log(req.body); //YOUR BODY 
}); 

app.listen(8080) 
+0

Если вы используете только bodyParser, используйте https://www.npmjs.com/package/body-parser. То, что экспресс использует за кулисами. – Gajus

Смежные вопросы