增加 Express.js 中的负载

问题描述 投票:0回答:1

按下提交按钮后,此代码将“1”或“2”值作为 cookie 发送:

<form action="/setorder" method="post" class="horizontal">
       <% if (req.cookies.doneAtLast == '1') { %>    
    <input type="hidden" name="done_at_last" value="0">
    <input type="submit" value="Do not sort">
        <% } else {%>
    <input type="hidden" name="done_at_last" value="1">
    <input type="submit" value="Sort">
       <% } %>    
</form>

但是,我收到 413 错误。

req.cookies.doneAtLast 现在是“{doneAtLast:'1'}”。 我尝试增加 pyload 大小:

import { Router, urlencoded, static as staticMiddleware } from 'express';
import methodOverride from 'method-override';
import { mainPage, detailedPage, addPage, add, setDone, remove, setOrder } from "./controllers/todos.js";
import { requestToContext, handleErrors } from './middleware.js';
import { mainErrorHandler, error500Handler } from './error-handlers.js';
import { todoV } from './validators.js';
import cookieParser from 'cookie-parser';
    
    const express = require('express');
    const app = express();
     
    // Route with increased JSON payload limit (50mb)
    app.post('/increased', express.json({ limit: '50mb' }), (req, res) => {
        res.send('Increased JSON payload limit');
      });
    
    const router = require(app).Router();
    
    ...
    router.post('/setorder', setOrder);

但这并没有帮助。

Node.js v20.18.0
[nodemon] app crashed - waiting for file changes before starting...

setOrder 控制器如下所示:

 export function setOrder(req, res){
  res.cookie('doneAtLast', req.body.done_at_last);
  res.redirect('/');
 } 

我很困惑,因为我向 cookies 发送 0 或 1,但 Express 将其标记为 413 错误。

express
1个回答
0
投票

出现 413 错误是因为服务器无法正确解析传入的表单数据,可能是由于缺少中间件或配置错误。通过添加express.urlencoded中间件并确保它在路由之前应用,您可以允许服务器解析URL编码的表单数据。此外,一致使用模块语法(require 与 import)并检查其他错误将有助于防止崩溃并确保您的服务器顺利运行。

© www.soinside.com 2019 - 2024. All rights reserved.