什么 headers 需要与 post 请求一起发送

What headers need to be sent with post request

我正在使用 postman 测试服务器,一切正常,从某种意义上说,我得到了答案:

但是如果我从浏览器向同一个地址发出 post 请求,它会抛出一个错误并且答案是未定义的

Postman 有以下 headers:

如何正确发送 post 请求以获得响应?

主文件(App.js):

const express = require('express');
const config = require('config');
const mongoose = require('mongoose');
const cors = require('cors');

const app = express();

const corsOptions = {
    origin: config.get('CORS.whiteList'),
    optionsSuccessStatus: config.get('CORS.optionsSuccessStatus')
}

app.use(cors(corsOptions));

app.use('/api/auth', require('./routes/auth.routes'));

const PORT = config.get('PORT') || 5000;

async function startServer() {
    try {
        await mongoose.connect(config.get('mongoUri'), {
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useCreateIndex: true
        });
        app.listen(PORT, () => console.log(`App has been started on port: ${PORT}`));
    } catch (err) {
        console.log(`Server error: ${err.message}`);
        process.exit(1);
    }
}

startServer();

和路由器:

const { body, validationResult } = require('express-validator');
const User = require('../models/User');
const config = require('config');
const bodyParser = require('body-parser');

const router = express.Router();

const jsonParser = bodyParser.json();

const urlencodedParser = bodyParser.urlencoded({ extended: false });

router.post('/login',
    urlencodedParser, [body('email', 'Некоректный email').isEmail()],
    async(req, res) => {
        try {
            const errors = validationResult(req);

            if (!errors.isEmpty()) {
                console.log(3)
                return await res.status(400).json({
                    errors: errors.array()[0].msg,
                    message: 'Некорректные данные при регистрации'
                })
            }

            const email = req;

            console.log(email)

            const candidate = await User.findOne({ email: email });

            console.log(3)

            if (candidate) {
                return await res.status(400).json({
                    msg: 'Такой email уже зарегестрирован'
                });
            }

            const user = new User({
                email
            });

            await user.save();

        } catch (err) {
            console.log(err)
            return await res.status(500).json({
                msg: 'Что-то пошло не так, попробуйте снова',
                err: err.stack
            });
        }
    }
);

module.exports = router;

据我了解,问题出在expressValidator。

UPD


我试过使用 formData,但它不起作用。

您期待的是 x-www-form-encoded,但您发送的是 json。

你应该这样做

const onSubmit = () => {
       

fetch(url, 
     { method: 'post', 
         headers: {
             { /* depending on server, this may not be needed */}
            'Content-Type': 'application/x-www-form-urlencoded'
       },
      body: new URLSearchParams({ 'email': 'daw' });

}


}