Doigrales
Doigrales

Reputation: 111

Request body is empty in Express router middleware

This is my simple nodejs app using express:

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)
});

Route handler "browser", where I added middleware:

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) => { 

});

Console

Here I got strange behaviour with middleware. I want to get request body data, but in console I see empty object instead expected body with content. After calling next() middleware fires second time and finally I am getting request body. Help me understand middleware behaviour in my case.

Upvotes: 1

Views: 1337

Answers (2)

max ivaneychyk
max ivaneychyk

Reputation: 158

It`s can be help. Install cors package, and give it in express.use.

https://www.npmjs.com/package/cors

Upvotes: 2

Doigrales
Doigrales

Reputation: 111

Middleware to support CORS pre-flight requests

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();
      }
}

Upvotes: 0

Related Questions