Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Node.js 快速路由器中间件中的请求正文为空_Node.js_Express_Middleware - Fatal编程技术网

Node.js 快速路由器中间件中的请求正文为空

Node.js 快速路由器中间件中的请求正文为空,node.js,express,middleware,Node.js,Express,Middleware,这是我使用express的简单nodejs应用程序: const express = require('express'); const app = express(); const user = require('./routes/user').user; const browser = require('./routes/browser'); const bodyParser = require('body-parser'); // CORS middleware const allowC

这是我使用express的简单nodejs应用程序:

const express = require('express');
const app = express();
const user = require('./routes/user').user;
const browser = require('./routes/browser');
const bodyParser = require('body-parser');

// CORS middleware
const allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', '*');
    res.header('Access-Control-Allow-Headers', '*');
    next();
}

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(allowCrossDomain);

app.use('/', user);
app.use('/', browser);

const port = process.env.PORT || 4001;

app.listen(port, function() {
    console.log('Express server listening on port ' + port)
});
路由处理程序“浏览器”,我在其中添加了中间件:

const express = require('express');
const router = express.Router();

router.use(function (req, res, next) { 
    console.log(req.body);
    next();
});

router.post('/get-content', (req, res) => { 

});


在这里,我发现了中间件的奇怪行为。我想获取请求主体数据,但在控制台中,我看到的是空对象,而不是包含内容的预期主体。调用next()后,中间件第二次启动,最后得到请求正文。帮助我了解中间件在我的情况下的行为。

支持CORS飞行前请求的中间件

const allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', '*');
    res.header('Access-Control-Allow-Headers', '*');

    //intercepts OPTIONS method
    if ('OPTIONS' === req.method) {
        res.sendStatus(200);
      } else {
        next();
      }
}

这很有帮助。安装cors软件包,并在express.use中提供


看起来第一个请求是。您使用哪个程序发送POST请求?@David Vicente POST请求由前端应用程序通过Axios@robertklep非常感谢,你帮了我很多忙。我必须通过express app中间件处理飞行前请求。非常感谢。用这个软件包也解决了我的问题。