web-dev-qa-db-ja.com

Node.js Express.js bodyParser POST制限

bodyParser.urlencodedParserlimitオプションを設定しようとしています。POSTデータがデフォルト値よりも大きいためです。私のコードは現在次のようになっていますが、私は常に次のエラーを受け取るようにしてください:

エラー:リクエストエンティティが大きすぎます

var express = require('express');
var router = express.Router();
var jsonfile = require('jsonfile');
var bodyParser = require('body-parser');

var urlencodedParser = bodyParser.urlencoded({limit: '5mb'});

router.post('/data', urlencodedParser ,function(req, res) {


    if(typeof req.body.data === 'undefined')
    {
       console.log('Missing data');
       res.status(500).send({ error: 'Missing Data Parameters' });
       return;
    }

    // Static return value
    var output = [ 
        {"f" : "1"},
        {"f" : "2"},
        {"f" : "3"}
    ];

    res.send(output);
}

どんな助けでも大歓迎です。

5
scgy

私もこれで同じエラーを経験し(MEAN.jsを使用)、(他のスレッドで回答されているように)エクスプレス構成に制限を設けようとしましたが、それでもうまくいきませんでした。

多くのパラメータを渡した場合は、パラメータの制限も設定する必要があるため、問題が制限だけではない場合があることがわかりました。

パラメータ制限を以下のように設定することで、問題を正常に修正しました。

var bodyParser = require('body-parser');

 app.use(bodyParser.urlencoded({
    parameterLimit: 100000,
    limit: '50mb',
    extended: true
  }));

パラメータ制限のデフォルト値は1000です。

Body-parserからのソース: https://github.com/expressjs/body-parser#parameterlimit

17
IMDWPD

Ajax経由で画像データを送信して「エラー:リクエストエンティティが大きすぎます」を取得するのに問題がありましたが、追加することで解決できました

app.use(bodyParser.json({limit: '50mb', type: 'application/json'}));

しかし、最も重要な部分は、私が電話したことを確認することでした

app.use(bodyParser());

制限を設定した後、これが役立つことを願っています!!

11
Matt