Nodejs express 如何解决413 请求实体过长?

Nodejs express 如何解决413 请求实体过长?

现在我需要接受大于1kb的数据 post过来的 但是当我发送的时候 node.js 返回的413 也没收到数据 我如何去解决这个问题,可以让我接受更大数据的post内容?

11 回复

Node.js Express 如何解决413 请求实体过长?

当你使用 Node.js 和 Express 处理 POST 请求时,如果客户端发送的数据超过了服务器允许的最大大小,你可能会遇到 413 Request Entity Too Large 错误。这是因为默认情况下,Express 中间件(如 body-parser 或内置的 express.json()express.urlencoded())对请求体的大小有限制。

为了处理更大的数据,你需要调整这些中间件的配置以允许更大的请求体大小。以下是如何做到这一点的步骤:

示例代码

首先,确保你已经安装了必要的依赖项:

npm install express body-parser

然后,在你的 Express 应用中进行如下配置:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();

// 设置请求体解析中间件,并允许更大的请求体大小
app.use(bodyParser.json({ limit: '5mb' })); // 允许最大5MB的数据
app.use(bodyParser.urlencoded({ limit: '5mb', extended: true }));

app.post('/upload', (req, res) => {
    const data = req.body;
    console.log(data);
    res.send('Data received successfully');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server is running on port ${PORT}`);
});

解释

  1. 安装依赖:我们安装了 expressbody-parser
  2. 设置中间件
    • bodyParser.json({ limit: '5mb' }):配置 body-parser 以允许最大为 5MB 的 JSON 数据。
    • bodyParser.urlencoded({ limit: '5mb', extended: true }):配置 body-parser 以允许最大为 5MB 的 URL 编码数据。
  3. 处理 POST 请求:定义了一个 /upload 路由来接收 POST 请求,并打印出请求体中的数据。
  4. 启动服务器:监听指定端口并启动服务器。

通过上述配置,你可以接收更大的 POST 请求体。你可以根据实际需求调整 limit 的值。如果仍然遇到问题,可能需要进一步检查网络或服务器的配置。


木有一个大神知道么? 求解决啊 在线等~~~~

如果你没有用nginx之类的server,看body-parser的配置

已解决 app.use(bodyParser.urlencoded({ “limit”:“10000kb”}));

在express4中我是这么解决的~ app.use(bodyParser.json({ “limit”:“10000kb”}));

如果用了nginx可以试试看是不是这个原因 http://www.9958.pw/post/nginx_413_error

在express4中我是这么解决的~ app.use(bodyParser.json({ “limit”:“10000kb”})); 如果用nginx做反向代理,可以把client_max_body_size设置30M

这个问题好重要,申请一个“精华”吧。我收藏 了。

通过流去上传,类似于传文件,node这边从stream里一点点获取?

另外如果是传输文件之类的话,可能需要用multi-part,直接用form-data会出这个问题

要解决 Node.js Express 中的 413 错误(请求实体过大),可以通过调整服务器的限制来实现。默认情况下,Express 使用的中间件(如 body-parserexpress-fileupload)可能有大小限制。你可以通过配置这些中间件来增加允许的最大请求体大小。

以下是一个示例代码,展示如何使用 expressbody-parser 来处理大请求体:

  1. 安装必要的依赖:
npm install express body-parser
  1. 配置 Express 应用来处理大请求体:
const express = require('express');
const bodyParser = require('body-parser');

const app = express();

// 设置 body-parser 中间件以解析 JSON 和 URL 编码的数据,并设置最大请求体大小为 10MB
app.use(bodyParser.json({ limit: '10mb' }));
app.use(bodyParser.urlencoded({ limit: '10mb', extended: true }));

app.post('/upload', (req, res) => {
  console.log(req.body);
  res.send('Data received');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

在这个例子中,我们通过设置 limit 参数来增加最大请求体大小。默认值通常较小(例如 100kb),因此将它设置为 10mb 允许接收更大的数据。

如果你使用的是较新的 Express 版本,可以直接使用内置的 express.json()express.urlencoded() 方法,并设置它们的 limit 选项:

app.use(express.json({ limit: '10mb' }));
app.use(express.urlencoded({ limit: '10mb', extended: true }));

通过上述配置,你的 Express 应用将能够处理更大尺寸的 POST 请求,从而避免 413 错误。

回到顶部