我有一个Go服务器,反向代理请求到Apache / PHP服务器。 我很less观察到Apache / PHP服务器偶尔会导致Go产生以下错误消息: malformed HTTP response "false"错误的malformed HTTP response "false" 。 这些请求是相同的,我可以在浏览器中按照请求path坐下来刷新一个页面,并且可能有一百次错误发生。 至于什么时候会发生,我还没有观察到任何的模式。 在任何访问日志,错误日志或系统日志中都没有任何相关的东西。
我已经能够让Go用下面的代码产生错误消息,所以看起来Apache必须发送无效响应,直接将string“false”写入到TCP连接。
任何线索,这将不胜感激。
请求:
package main import ( "fmt" "net/http" "net/http/httputil" ) func main() { req, _ := http.NewRequest("GET", "http://127.0.0.1:36302", nil) resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } respDump, _ := httputil.DumpResponse(resp, true) fmt.Println(string(respDump)) }
服务器:
package main import ( "fmt" "io" "net" "time" ) func main() { l, _ := net.ListenTCP("tcp4", &net.TCPAddr{net.ParseIP("127.0.0.1"), 36302, ""}) for { fmt.Println("Accepting connections") c, err := l.AcceptTCP() if err != nil { fmt.Println(err) } time.Sleep(1 * time.Second) io.WriteString(c, "false") time.Sleep(1 * time.Second) c.Close() } }