2017-04-14 18 views
0

、私は正常に動作し、以下を使用します。エクスプレス:123バイトに要求のサイズを制限する制限要求サイズ

app.use(bodyParser.urlencoded({ 
    extended: true, 
    limit: 123 
})); 

を除くすべての要求「/ specialRequest」を解析するには、私がこれ以下のものを使用し

app.use(/^(?!\/specialRequest)/,bodyParser.urlencoded({ 
    extended: true 
})); 

しかし、私は123にすべて要求の要求サイズを制限し、「/ specialReqを除くすべての要求を解析するために失敗します。同様に正常に動作しますuest "ここに私の現在のコードはあります:

app.use(/^(?!\/specialRequest)/,bodyParser.urlencoded({ 
    extended: true, 
    limit: 123 
})); 

しかし、これは "/ specialRequest"とは異なる要求の要求サイズを制限します。 リクエストを123に制限し、すべてのリクエストを解析するにはどうすれば/specialRequestを除いてですか?

答えて

1

/specialRequestの要求本文のサイズは制限されていても解析されないようにするには、bodyParser.raw()を使用できます。その場合、req.bodyは、要求本体をそのまま含む、Bufferインスタンスになります(未解析ですが、gzipまたはdeflatedデータとして提示された場合には膨大になりますが、この動作はオプションで無効にすることができます)。

あなたはbodyParser.urlencoded()ミドルウェア挿入する前にそれを宣言する必要があります:

app.post('/specialRequest', bodyParser.raw({ limit : 123, type : '*/*' }), function(req, res) { 
    ... 
}); 

app.use(bodyParser.urlencoded({ 
    extended: true, 
    limit: 123 
})); 
+0

をしかし、このアプローチは、123に「/ specialRequest」の大きさを制限していないでしょうか? – BJPrim

+0

@BJPrim私は私が誤解したと思う、私の編集を参照してください。 – robertklep

+0

はい、私の意図ですが、bodyParser.raw({limit:123})を追加しても効果はありません。 bodyParser.urlencoded()の前に置きますが、エラーや警告は表示されません。 – BJPrim

関連する問題