gpt4 book ai didi

javascript - 如何在 node.js 服务器上接收 "navigator.sendbeacon"发布的数据?

转载 作者:IT老高 更新时间:2023-10-28 23:05:12 29 4
gpt4 key购买 nike

我正在使用新的浏览器功能 (navigator.sendBeacon) 将异步数据发布到 node.js 服务器。

但我无法在 Node 服务器上接收它。那么谁能告诉我如何接收sendBeacon在 Node 服务器上发布的数据。

Node 服务器代码为:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

// set cross origin header to allow cross-origin request.
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});

app.use(bodyParser.json());

app.post('/',function(req,res){
console.log('i got the request',req.body)
});

var server = app.listen(3000, function() {
console.log('Express is listening to http://localhost:3000');
});

客户端代码

navigator.sendBeacon('http://localhost:3000/','{"a":9}')

最佳答案

navigator.sendBeacon POST 使用 Content-Type:text/plain;charset=UTF-8 来传输字符串数据。所以只需添加 bodyParser.text() 来解析“text/plain”数据:

服务器:

...
app.use(bodyParser.json());
app.use(bodyParser.text());
...

客户:

navigator.sendBeacon('http://localhost:3000/', JSON.stringify({a:9}));

更新

显然你可以使用 Blob在您的请求中添加 Content-Type:application/json header :

客户:

var blob= new Blob([JSON.stringify({a:9})], {type : 'application/json; charset=UTF-8'}); // the blob
navigator.sendBeacon('http://localhost:3000/', blob )

关于javascript - 如何在 node.js 服务器上接收 "navigator.sendbeacon"发布的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355128/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com