Node js api 400错误,对于来自前端JavaScript的请求的响应,但是对于来自Postman的请求的200,OK

问题描述 投票:0回答:1

我使用此CORS配置在localhost:3000处有一个节点应用程序:

var cors = require('cors');
var app = express();

// Add headers
app.use(function (req, res, next) {

  res.header('Access-Control-Allow-Origin', '*');
  app.use(cors());

  next();
});

这里有我的发布方法:

router.post('/saveragnarokuser',function(req,res,next){

    console.log('######################### Iniciando saveragnarokuser.');

    UserRagnarokController.addUser(req.body,function(err,count){
        if(err){
            console.log('entrei aqui error: ' + err);
            res.json(err);
        }
        else{

            console.log('entrei aqui ok');

            var userObj = {
                response: "OK"
             };

            res.json(userObj);
        }
    });
});

当我试图通过html / javascript访问此路由时,服务器端控制台说:

OPTIONS /user-ragnarok-controller/saveragnarokuser/ 200 0.490 ms - 4
POST /user-ragnarok-controller/saveragnarokuser/ 400 26.881 ms - 936

这是我的javaScript(客户端)方法:

var invocation = new XMLHttpRequest();

function handler() {
    if(invocation.readyState === XMLHttpRequest.DONE && invocation.status === 200) {
        alert('entrei aqui');
        console.log(invocation.responseText);
    } else 
        alert('nao foi hj');
}

function saveUser() {   
    alert('face');
    var eml = document.getElementById('emailInputRegister');
    var user = document.getElementById('userInputText');
    var sx = document.getElementById("sexInputSelected");
    var selectedSex = sx.options[sx.selectedIndex].value;
    var pwd = document.getElementById("passwordInputRegister");

    var uri = 'http://localhost:3000/user-ragnarok-controller/saveragnarokuser/';
    var body = {
        'userid': user.value,
        'userpass': pwd.value,
        'email': eml.value,
        'sex': selectedSex
    };

    invocation.open('POST', uri, true);

    invocation.setRequestHeader('Content-Type', 'application/json');
    invocation.onreadystatechange = this.handler;
    invocation.send(body);
}

当我使用POSTMAN连接到这条路线时,一切正常

POST /user-ragnarok-controller/saveragnarokuser/ 200 116.766 ms - 17

POSTMAN Result

javascript node.js xmlhttprequest client-server
1个回答
0
投票

检查https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send

invocation.send(body);

尝试以下内容

invocation.send(JSON.stringify(body));

根据我的理解,您的代码正尝试使用body.toString()发送请求。

© www.soinside.com 2019 - 2024. All rights reserved.