Javascript 如何阻止req.body为空。node.js express
我有一个简单的express应用程序,可以获取一个获取请求,即获取 看起来像这样:Javascript 如何阻止req.body为空。node.js express,javascript,node.js,express,cmd,localhost,Javascript,Node.js,Express,Cmd,Localhost,我有一个简单的express应用程序,可以获取一个获取请求,即获取 看起来像这样: let opts = { method: "POST", headers: { "Content-Type": "application/json", }, mode: "no-cors", body: { "test": "test" } } fetc
let opts = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
mode: "no-cors",
body: {
"test": "test"
}
}
fetch("http://localhost:3001/data", opts)
const express = require('express');
const app = express();
app.listen(3001, () => console.log("listening at 3001"));
app.use(express.static("public"));
app.use(express.json());
app.post("/data", (req, res) => {
console.log("post recived");
console.log(req.body);
});
它位于setup()函数中
服务器端代码如下所示:
let opts = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
mode: "no-cors",
body: {
"test": "test"
}
}
fetch("http://localhost:3001/data", opts)
const express = require('express');
const app = express();
app.listen(3001, () => console.log("listening at 3001"));
app.use(express.static("public"));
app.use(express.json());
app.post("/data", (req, res) => {
console.log("post recived");
console.log(req.body);
});
在我的控制台中,刷新所有内容后得到的结果如下:
listening at 3001
post recived
{}
帖子的正文不是未定义的,但它是空的,我不知道我一生中的问题是什么问题一:没有cors
模式:“无cors”,
是一种声明,表示您不打算做任何需要cors许可的事情,任何与cors相关的错误都应该被抑制
您需要获得CORS的许可才能设置应用程序/json
内容类型标题
因此,第一项工作是删除该行
问题二:CORS 然后,您需要更改服务器,以便它授予您发出请求的权限 安装并按照此处的安装说明进行操作 因为设置
application/json
content-type头需要一个预飞行,所以请确保您的操作是正确的
问题三:JSON 您声称正在发送JSON,但正在传递一个普通对象 执行此操作时,
fetch
将使用内置的toString
方法将其转换为字符串。这将为您提供“[object object]”
,它不是JSON,也不包含您的数据
您需要传递JSON
body: JSON.stringify({
"test": "test"
})
可运行代码段用于可在浏览器内执行的代码段。请使用三个勾号(````)将代码格式化。下次您需要将正文设置为字符串并设置正确的标题时,请参阅我应该放置什么来代替“/products/:id”?您要为其启用CORS的路径