2017-04-14 102 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實例,其中包含請求正文(未解析,儘管如果呈現爲壓縮或縮小的數據,則會被誇大;此行爲可通過其選項禁用)。

您需要在插入bodyParser.urlencoded()中間件之前聲明它:

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

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

但「/ specialRequest」的大小這種做法不會限制到123? – BJPrim

+0

@BJPrim我想我誤解了,看我的編輯。 – robertklep

+0

是的,這是我的意圖,但是添加bodyParser.raw({limit:123})沒有任何效果。我把它放在bodyParser.urlencoded()之前,但沒有顯示錯誤和警告。 – BJPrim