【发布时间】:2023-02-25 02:51:25
【问题描述】:
我是在模仿cors的request来表达。
状态正常,请求和响应成功。网络显示填充有表单数据的有效负载。 Hovewer 在 nodejs 终端登录控制台undefined。
使用以下代码发送表单字段:
<form id="formElt">
<input type="text" name="FirstInput" id="" value="FirstInputValue"/>
<input type="text" name="SecondInput" id="" value="SecondInputValue"/>
</form>
<button class="postBtn">POST</button>
<script>
postBtn.onclick = async () => {
let formElt = this.querySelector('#formElt');
let fd = new FormData(formElt);
fd.append('testInput', 'TestInputValue');
await fetch('http://localhost:8080/add', {
method: 'post',
body: fd
})
.then(res => {
return res.text();
})
.then(data=>{
p.innerText = data;
})
}
</script>
在 nodejs 端有:
const Router = require('express');
const cors = require('cors');
const router = Router();
router.use(cors())
const postOptions = {
origin: 'http://127.0.0.1:5500',
}
router.post('/add', cors(postOptions), (req, res)=> {
console.log(req.body);
res.send('hello from node! Data received!');
})
【问题讨论】:
-
这个问题是否只发生在你发送 fd 到你体内的时候?你用字符串试过吗?
-
我不清楚是什么过程。甚至,在
fd.append('testInput', 'TestInputValue')调用console.log(fd)之后,控制台也会记录一个空的FormData {}。但是,为什么有效载荷填充了预期的内容? -
尝试在正文中传递一个字符串。 F.e. body: 'foo' 查看那里的响应是否未定义。
-
完全一样。Payload显示:Request Payload 'foo', nodejs logs
undefined -
之前尝试在变量中定义您的字符串。在你的 Body 中使用:JSON.stringify(VARNAME) 让我知道这是否有效
标签: node.js express cors fetch form-data