koa-bodyparser返回413狀態碼的問題


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-bodyco-body 的底層又是 raw-bodyraw-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 庫的文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM