Nodejs后端接收空的请求体

时间:2021-01-03 09:26:35

标签: node.js reactjs express

我仍在学习 Nodejs 和 expresjs。通过使用 react-facebook-login,可以从包含电子邮件、用户 ID 等的 facebook api 成功生成响应。在我的客户端,我有一个动作将请求发布到包含 facebook 登录状态的服务器,并且我有一个 nodejs 服务器来处理 facebook 登录和验证。但是在我的服务器端,我的 req.body 没有捕获任何空对象 {}。它一直说这是一个错误的 400 请求。在 Postman 中,我可以通过 API 成功捕获它。我该如何解决?有可能被facebook屏蔽吗?

image showing postman

在我的客户端 -> action.js,

export const FacebookLoginAction = (facebookLoginState, FbAccessToken, history) => {
    return async (dispatch) => {
        try {
            const Origin = window.location.origin;
            const res = await axios.post(`${Origin}/facebook-login`, facebookLoginState, {
                headers: {
                    'Content-Type': 'application/json',
                    'accept': 'application/json'
                },
               FbAccessToken
            });
            const { data } = res;
            dispatch({
                type: UserActionTypes.FACEBOOK_LOGIN_SUCCESS,
                payload: data
            });
            toast.success(data.status);
            history.push("/");
        } catch (error) {
            if (error.response) {
                dispatch({
                    type: UserActionTypes.FACEBOOK_LOGIN_FAIL,
                    payload: error.response.data.message,
                });
                toast.error(error.response.data.message);
            }
        }
    };
};

在我的服务器端 -> app.js,

const path = require('path');
const express = require('express');
const rateLimit = require('express-rate-limit');
const helmet = require('helmet');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();
app.enable('trust proxy');

app.set('view engine', 'ejs');

app.use(cors());
app.options('*', cors());

app.use(express.static(path.join(__dirname, 'public')));
app.use(helmet());

// Limit requests from same API
const limiter = rateLimit({
  max: 100,
  windowMs: 60 * 60 * 1000,
  message: 'Too many requests from this IP, please try again in an hour!'
});
app.use('/api', limiter);

app.use(express.json({ limit: '10kb' }));
app.use(express.urlencoded({ extended: true, limit: '10kb' }));

app.use(cookieParser());

app.use('/api/v1/users', userRouter);

module.exports = app;

在我的 userRoute.js 中,

const express = require('express');
const authController = require('./../controllers/authController');

const router = express.Router();

router.post('/facebook-login', authController.facebooklogin);
// rest router ...
module.exports = router;

在我的 authController 中,

exports.facebooklogin = catchAsync(async (req, res, next) => {
  console.log(req.body); --> empty object

  // rest code
});

0 个答案:

没有答案