【发布时间】:2020-06-04 21:59:10
【问题描述】:
我在 localhost:3000 有一个节点应用程序,带有这个 CORS 配置:
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":"acosta.aluiz@gmail.com","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":"acosta.aluiz@gmail.com","sex":"M"}
entrei aqui ok
POST /user-ragnarok-controller/saveragnarokuser/ 200 10089.318 ms - 17
【问题讨论】:
-
显示的
POST /user-ragnarok-controller/saveragnarokuser/ 400 26.881 ms - 936响应表明对POST请求的响应的HTTP状态码是400 Bad Request错误。这与 CORS 无关,而是表明服务器说请求未按照服务器期望的方式格式化。检查服务器上的服务器日志以查找该/user-ragnarok-controller/saveragnarokuser/端点,并查找那里记录的错误消息,这些消息提供有关请求问题的更具体信息。
标签: javascript node.js xmlhttprequest client-server