Как получить доступ к «полезной нагрузке запроса» в веб-платформе Koa? - PullRequest
0 голосов
/ 03 декабря 2018

Мы используем функцию navigator.sendBeacon для отправки данных на сервер Koa, на котором мы используем bodyparser.

Если мы не упаковали данные в форму, то по умолчанию эта функция отправляет данные в качестве полезной нагрузки запроса.Как я могу получить доступ к этим данным на сервере Koa?

Пример -

navigator.sendBeacon('http://localhost:3000/cookies/', 'test=payload')

На сервере тело запроса пусто.

enter image description here

1 Ответ

0 голосов
/ 11 июня 2019

Учитывая, что

  1. Koa не анализирует тело запроса, поэтому вам нужно использовать либо koa-bodyparser , либо koa-body ,

  2. koa-bodyparser по умолчанию имеет только разбор json и form,

  3. С ваш снимок экрана Ясно, что navigator.sendBeacon установить Content-Type на text,

Вам необходимо изменить код сервера Коа, чтобы он анализировал данные text.

Пример:

const Koa = require('koa'),
  bodyParser = require('koa-bodyparser'),
  app = (module.exports = new Koa());

app.use(bodyParser({ enableTypes: ['json', 'text'] }));

app.use(async (ctx) => {
  // ctx.request.body should contain the parsed data.
  console.log('Received data:', ctx.request.body);
  ctx.body = ctx.request.body;
});

if (!module.parent) app.listen(3000);

Протестировано с

koa 2.7.0,

koa-bodyparser 4.2.1.

...