413 Request Entity Too Large(請求實體太大)
數日前,我用 node.js 寫的一個日志服務拋出了這個狀態碼……
自己寫的服務拋出了一個自己都不認識的狀態碼,這是最氣的!(╯‵□′)╯︵┻━┻
檢查之下發現是 koa-bodyparser 這個中間件的配置不太對;
因為這個中間件實在是太好用,裝上后幾乎什么都不用管,以至於我連她需要什么配置都不清楚,出了錯之后才趕緊回去翻文檔,
雖然寫的很簡略,但官方文檔中還是提到了
formLimit: limit of the urlencoded body. If the body ends up being larger than this limit, a 413 error code is returned. Default is 56kb.
jsonLimit: limit of the json body. Default is 1mb.
textLimit: limit of the text body. Default is 1mb.
這三個配置項就是對請求體進行限制的,一般情況下默認的限制就夠用,但如果涉及到使用 form-data 方式進行富文本上傳,可能就會出錯了,因為 form-data 的默認最大上傳限制只有 56kb ;
只需要改成:
app.use(bodyParser({
formLimit: '1mb'
}));
至於這三個 limit 選項可以支持的單位,官方文檔上沒有寫,但是查了一下原代碼可以發現:
koa-bodyparser
的底層是 co-body
, co-body
的底層又是 raw-body
, raw-body
則使用 bytes
庫的 bytes.parse
來格式化 limit 參數。
so,我們可以使用bytes
庫支持的所有單位來設置 limit 配置項,具體來講,文檔上寫的是:
- b for bytes
- kb for kilobytes
- mb for megabytes
- gb for gigabytes
- tb for terabytes
如果不寫單位,默認就是 'b' ,更細節的東西可以查看 bytes
庫的文檔