node.js - 如何在 Koa 网络框架中访问“请求有效负载”?
问题描述
我们使用 navigator.sendBeacon 函数将数据发送到 Koa 服务器,我们在其中使用 bodyparser。
如果我们没有将数据包装成表单,那么默认情况下此函数将数据作为请求负载发送。我怎样才能在 Koa 服务器上访问这些数据?
例子 -
navigator.sendBeacon('http://localhost:3000/cookies/', 'test=payload')
在服务器上,请求正文为空白。
解决方案
考虑到
Koa 不解析请求正文,因此您需要使用koa-bodyparser或koa-body,
koa-bodyparser
默认情况下仅启用json
和form
解析,从您的屏幕截图中,很明显将
navigator.sendBeacon
设置Content-Type
为text
您需要更改 Koa 服务器代码,以便它解析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);
经测试
考阿2.7.0
,
koa-bodyparser 4.2.1
。
推荐阅读
- c# - 如何通过包含表单数据但不单击提交按钮的 ajax 将视图模型发送到控制器
- hyperledger-fabric - Hyperledger Fabric Q
- elixir - utc_datetime 的 Proto3 Elixir 正确类型
- firebase - BuildFire:跟踪商务和转化分析
- sql - oracle函数返回表
- laravel-8 - Laravel 8 Jetstream如何在重置密码后将用户重定向到自定义路由
- android - Firebase 电话身份验证 SHA-1 指纹问题
- reactjs - 将道具从导航链接传递到组件 React 路由器
- python - Scipy优化curve_fit、sigma和约束曲线问题
- jsonschema - JSON Schema $ref 属性