如果我有POST請求的基本http處理程序,如果有效負載大於100 KB,如何停止處理?停止處理HTTP POST請求,如果它大於x大小
根據我的理解,在我的POST Handler中,幕後服務器正在流POSTED數據。但是如果我嘗試訪問它,它會阻止正確的? 如果超過100 KB的大小,我想停止處理。
如果我有POST請求的基本http處理程序,如果有效負載大於100 KB,如何停止處理?停止處理HTTP POST請求,如果它大於x大小
根據我的理解,在我的POST Handler中,幕後服務器正在流POSTED數據。但是如果我嘗試訪問它,它會阻止正確的? 如果超過100 KB的大小,我想停止處理。
使用http.MaxBytesReader來限制從客戶端讀取的數據量。主叫r.ParseForm,r.FormValue或讀取身體的任何其它請求方法之前執行下面這行代碼
r.Body = http.MaxBytesReader(w, r.Body, 100000)
。
使用io.LimitedReader包裝請求主體限制了應用程序讀取的數據量,但不一定限制服務器代表應用程序讀取的數據量。
檢查the request content length是不可靠的,因爲當使用分塊編碼時該字段沒有被設置爲實際的請求主體大小。
Yikes的文檔,完全錯過了'http.MaxBytesReader',儘管它從(至少)Go 1.0開始!謝謝,現在需要更新一些我的LimitedReader用例。 – tomasz
我相信你可以簡單地檢查http.Request.ContentLength
param,以便在決定是否繼續之前知道發佈的請求的大小,或者如果大於預期返回錯誤。
[Here](https://golang.org/pkg/io/#LimitReader)是LimitReader – openwonk