javascript - How to receive data posted by "navigator.sendbeacon" on node.js server? -
i using new browser feature(navigator.sendbeacon) post async data node.js server.
but unable receive on node server. 1 tell me how receive data posted sendbeacon on node server.
node server code is:
var express = require('express'); var app = express(); var bodyparser = require('body-parser'); // set cross origin header 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 request',req.body) }); var server = app.listen(3000, function() { console.log('express listening http://localhost:3000'); });
client side code
navigator.sendbeacon('http://localhost:3000/','{"a":9}')
navigator.sendbeacon
post uses content-type:text/plain;charset=utf-8
transmit string data. add bodyparser.text()
parse 'text/plain' data:
server:
... app.use(bodyparser.json()); app.use(bodyparser.text()); ...
client:
navigator.sendbeacon('http://localhost:3000/', json.stringify({a:9}));
update
apparently can use blob
add content-type:application/json
header in request:
client:
var blob= new blob([json.stringify({a:9})], {type : 'application/json; charset=utf-8'}); // blob navigator.sendbeacon('http://localhost:3000/', blob )
Comments
Post a Comment