nodejs koa 413 Payload err

# 项目背景

        使用nodejs + koa2 搭建服务器,客户端向服务端发送消息,消息体以json格式传输。

# 问题:

        客户端发送的json消息超过1M时,平台未处理相关请求

首先想到的是服务器显示了包体大小,于是修改koa中body部分的配置:maxFieldsSize 字段

修改如下:

.use(body({
  multipart: true,
  formidable: {
    maxFieldsSize: 1000 * 1024 * 1024,
    maxFileSize: 1024 * 1024 * 1024, // 限制默认最大上传大小1G 不添加这个限制条件的话 默认最大上传文件大小是2M
    keepExtensions: true
  },
  multiples: false // 限制上传一个文件
}))

然而设置无效,依旧收不到设备的请求。

让客户端打印了下服务器的返回状态码,返回如下

 413  Payload err

搜索这个错误的时候看到下面这篇文章

 node.js 的express服务器报 413 payload too large

var bodyParser = require('body-parser');
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

按照其方法修改后,服务器编译后报错,再观察koa文件配置发现:

import body from 'koa-body';

想来这个koa-body应该已经集成了body-parser的功能,在koa-body中应该也有json和urlencode的配置,找到koa-body调用的地方

 .use(body({
      multipart: true,
      formidable: {
        maxFieldsSize: 1000 * 1024 * 1024,
        maxFileSize: 1024 * 1024 * 1024, // 限制默认最大上传大小1G 不添加这个限制条件的话 默认最大上传文件大小是2M
        uploadDir: config.dir.upload,
        keepExtensions: true
      },
      multiples: false // 限制上传一个文件
    }))

点击multipart跳链进入源码,恰好上面就有个jsonLimit,默认值1mb

        /**
         * {String|Integer} The byte (if integer) limit of the JSON body, default 1mb
         */
        jsonLimit?: string|number;

        /**
         * {String|Integer} The byte (if integer) limit of the form body, default 56kb
         */
        formLimit?: string|number;

        /**
         * {String|Integer} The byte (if integer) limit of the text body, default 56kb
         */
        textLimit?: string|number;

        /**
         * {String} Sets encoding for incoming form fields, default utf-8
         */
        encoding?: string;

        /**
         * {Boolean} Parse multipart bodies, default false
         */
        multipart?: boolean;

修改为3mb后,服务器成功收到客户端的消息。

 .use(body({
      multipart: true,
      jsonLimit: '3mb',
      formidable: {
        maxFieldsSize: 1000 * 1024 * 1024,
        maxFileSize: 1024 * 1024 * 1024, // 限制默认最大上传大小1G 不添加这个限制条件的话 默认最大上传文件大小是2M
        keepExtensions: true
      },
      multiples: false // 限制上传一个文件
    }))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值