1 回答
TA贡献1966条经验 获得超4个赞
在处理程序的开头调用ParseForm 。如果此方法返回错误,则表明超出了大小限制或请求正文在某种程度上无效。写入错误状态并从处理程序返回。
没有一种简单的方法可以检测错误是由于违反大小限制还是其他一些错误造成的。
func PostHandler(w http.ResponseWriter, r *http.Request) {
if err := r.ParseForm(); err != nil {
http.Error(w, "Bad Request", http.StatusBadRequest)
return
}
book := r.FormValue("email")
fmt.Fprintf(w, "You've requested the book: %s\n", book)
}
根据您的需要,将检查放在中间件中可能会更好:
func maxBytes(f http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
r.Body = http.MaxBytesReader(w, r.Body, 10)
if err := r.ParseForm(); err != nil {
http.Error(w, "Bad Request", http.StatusBadRequest)
return
}
f(w, r)
}
}
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报