我使用此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.565 ms - 4
######################### Iniciando saveragnarokuser.
myReqbody: {"userid":"bruna","userpass":"teste","email":"[email protected]","sex":"M"}
POST /user-ragnarok-controller/saveragnarokuser/ - - ms - -
entrei aqui ok
这是我的带有XMLHttpRequest的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(JSON.stringify(body));
}
}
当我使用POSTMAN连接到此路由时,一切正常。我注意到POSTMAN的请求没有连接OPTIONS日志
######################### Iniciando saveragnarokuser.
myReqbody: {"userid":"1234658","userpass":"teste","email":"[email protected]","sex":"M"}
entrei aqui ok
POST /user-ragnarok-controller/saveragnarokuser/ 200 10089.318 ms - 17
检查https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send
invocation.send(body);
尝试以下内容
invocation.send(JSON.stringify(body));
根据我的理解,您的代码正尝试使用body.toString()
发送请求。