我试图发送一个关于可见性变化的帖子请求(如docs中所描述的),并且取得了有限的成功。我成功地提出了sendBeacon请求,但似乎无法读取Node.js Express服务器上的对象。这是我的发送信标js代码:
navigator.sendBeacon("/delete-room", JSON.stringify({roomID: 'test'}))然后,当我通过快递处理它时:
app.post('/delete-room', (req, res)=>{
console.log('Recieved ' + req.body)
res.status(200).end()
})我得到了这个日志:Recieved [object Object]。我无法读取req.body.roomID,即使在解析完主体之后(它返回错误不能解析对象对象)。我还尝试用一种形式对其进行编码:
var formData = new FormData()
formData.append('roomID', 'test')
navigator.sendBeacon("/delete-room", data);它在服务器上返回此日志:Recieved {}。
为什么我不能收到这个请求?谢谢!
发布于 2021-01-16 06:43:40
用你的代码
var formData = new FormData()
formData.append('roomID', 'test')
navigator.sendBeacon("/delete-room", data);sendBeacon()函数通过HTTP请求以原始格式发送数据。
安装本体解析器表示中间件(npm install body-parser --save),然后:
// index.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.raw());
app.post('/delete-room', (req, res)=>{
console.log('Received ' + req.body)
res.status(200).end()
})
app.listen(8080, () => console.log(`Started server at http://localhost:8080!`));https://stackoverflow.com/questions/65746784
复制相似问题