簡體   English   中英

Node.JS POST請求通過護照保護的Express應用程序

[英]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-Typeapplication/jsonapplication/x-www-form-urlencodedmultipart/form-data 您的request()似乎沒有設置任何這些,這確實是正確的,因為它只是自由格式的數據,但這意味着沒有中間件正在讀取請求數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM