1 回答
TA贡献1821条经验 获得超6个赞
大多数客户端在完成写入请求之前不会读取响应。响应来自服务器的错误不会导致这些客户端停止写入。
net/http 服务器支持100 continue 状态。要使用此功能,服务器应用程序应在读取请求正文之前响应错误:
func handler(w http.ResponseWriter, r *http.Request) {
if r.ContentLength > MaxFileSize {
http.Error(w, "request too large", http.StatusExpectationFailed)
return
}
r.Body = http.MaxBytesReader(w, r.Body, MaxFileSize)
err := r.ParseMultipartForm(1024)
// ... continue as before
如果客户端发送了“Expect: 100-continue”标头,则客户端应该在写入请求正文之前等待 100 continue 状态。当服务器应用程序读取请求正文时,net/http 服务器会自动发送 100 continue 状态。服务器可以通过在读取请求之前回复错误来阻止客户端写入请求正文。
net/http 客户端不支持 100 continue 状态。
如果客户端没有发送 expect 标头并且服务器应用程序从请求处理程序返回而不读取完整的请求正文,则 net/http 服务器读取并丢弃最多 256 << 10 个字节的请求正文。如果未读取整个请求正文,服务器将关闭连接。
- 1 回答
- 0 关注
- 191 浏览
添加回答
举报