0
晕,只要使用了w.(http.Flusher).Flush(),响应头就会被重置
请求大佬们解决
晕,只要使用了w.(http.Flusher).Flush(),响应头就会被重置
请求大佬们解决
看来timeoutWriter应该使用原始http标头的副本,我将测试它。
w.(http.Flusher).Flush() 导致底层 http.ResponseWriter 调用 #Write(...),后者调用
隐式 WriteHeader(...)。正如 http.ResponseWriter 的文档所说,更改标头映射后对 WriteHeader(或 Write)的调用无效。深入研究 TimeoutHandler 的实现,当收到完成信号时,它会将 timeoutWriter 的标头复制到底层 http.ResponseWriter 的标头中,此时会进行 Flush 调用,因此复制无效。Solotion 是在调用 timeoutWriter 的 #WriteHeader(...) 方法时复制标头,这使底层 http.ResponseWriter 的标头保持同步。@kevwan @tqqya
我也遇到了同样的问题,请问应该如何解决呢?