[英]Node.JS POST request to Express app secured by passport
機理:
我正在向我的API發出此POST請求:
request.post('http://localhost:9876/api/alerts',{body: "test"}, function (err, res, body) {
if (err) {
self.emit('log','ERROR : API error - '+err);
}
self.emit('log','RESPONSE - '+res.statusCode);
});
在服務器端,我有:
app.post('/api/alerts',function(req,res){
console.log(req);
res.status(200).send('OK');
});
進行通訊,並返回200狀態。 但是在服務器端,我看不到請求主體的痕跡。
完整的“ req”日志可在此處找到: https : //gist.github.com/xShirase/0f9de0048e5cfa40a98c ,最相關的部分是:
body: {},
我想知道它是否來自我用來保護其余路由的Passport中間件,還是我只是在破壞客戶請求...
我已經在客戶端嘗試了許多不同的請求格式,但是沒有任何效果,並且我對Passport的經驗很少,所以請讓我知道問題出在哪里。
除非您在路由/中間件鏈中較早的地方有一個(自定義)中間件,其工作方式如下:
app.use(function(req, res, next) {
var buffer = '';
req.setEncoding('utf8');
req.on('data', function(d) {
buffer += d;
}).on('end', function() {
req.body = buffer;
next();
});
});
那么您可能不應該期望req.body
會被填充,因為通用主體解析模塊期望Content-Type
為application/json
, application/x-www-form-urlencoded
或multipart/form-data
。 您的request()
似乎沒有設置任何這些,這確實是正確的,因為它只是自由格式的數據,但這意味着沒有中間件正在讀取請求數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.