You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 3 Current »
context cancel
当客户端主动取消请求(例如主动取消,或者请求超过客户端设置的时间)后,特别是浏览器访问时直接取消请求,服务端可能会遇到context canceled的错误。这个属于正常现象,Golang标准库的http server设计亦如此。当客户端不再需要这个请求的结果时会取消请求,这时服务端继续往下执行也没有了意义。如果介意这个错误,可以使用一个自定义的中间件增加NeverDoneCtx的处理逻辑,这个时候服务端会忽略客户端的取消请求并继续往下执行。
context canceled
Golang
http server
NeverDoneCtx
// MiddlewareNeverDoneCtx sets the context never done for current process. func MiddlewareNeverDoneCtx(r *Request) { r.SetCtx(r.GetNeverDoneCtx()) r.Middleware.Next() }