我发布这个题目关于标题建议的问题。我看到有关空请求组织的其他几个问题,但没有一个对我有帮助。希望如果我发布自己的代码,有人可以给我一个很好的提示。节点js与CORS和JSON空请求正文
基本上我有一个客户端使用JavaScript来使CORS HTTPRequests到Node.js服务器。通常这些HTTPRequests是JSON对象的帖子。
这里是客户端的示例代码。
username = document.getElementById("username").value;
password = document.getElementById("password").value;
var str = '{"name":"'+username+'","pass":"'+password+'"}';
var req = new XMLHttpRequest();
req.open("POST","http://xxxx:8099/register",true)
req.setRequestHeader("Content-type", "application/json");
req.onreadystatechange = function()
{
//irrelevant
}
req.send(str);
}
这里是服务器的代码。
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
extended: true
}));
// parse application/json
app.use(bodyParser.json());
app.listen(8099);
app.post("/register", function (req, res) {
console.log(req.body); // populated!
console.log(req.body.name);
res.send(200, req.body);
});
现在这些都是我一直得到的结果:
如果我设置请求内容类型为application/JSON,然后在服务器上,我得到一个空的请求主体。
如果我将请求Content-type设置为application/x-www-form-urlencoded,那么我得到一个填充体,例如{'{“name”:“usernamtest”,“pass”:“123” }':''}。
但是,如果我尝试打印req.body.name,我将得到未定义的意味着body-parser没有正确地将正文解析为JSON。
我将如何解决这个问题?我只想结束示例中这些属性的JSON对象。
对于那些阅读本文,我感谢您的时间。 补全, 里卡多费雷拉达席尔瓦
你确定代码不*工作吗?试了一下,我得到了预期的结果(打印到控制台名称)。你是否正确地从输入中获取数据?您可以尝试清理您的XHR代码:https://jsbin.com/revovemepu/edit?js – adrianp
是的,我确定客户端与我的教授已经完成的测试服务器完全匹配,但它不起作用与我的。如果我按照原样运行代码,当我打印req.body时,我得到了{},这是一个空的主体。 –
http:// xxxx:8099/register中的** xxxx **是什么?您是否正在提出跨域请求?您服务嵌入客户端JS的HTML页面的域是否与您制作XHR的域不同? – adrianp