我使用此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
检查https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
invocation.send(body);
尝试以下内容
invocation.send(JSON.stringify(body));
根据我的理解,您的代码正尝试使用body.toString()
发送请求。