У меня есть сервер Go, который запрашивает обратные прокси-серверы на сервер Apache / PHP. Мне редко удавалось заметить, что иногда сервер Apache / PHP заставляет Go выдавать следующее сообщение об ошибке: malformed HTTP response "false"
. Запросы идентичны, и я могу сесть и обновить страницу в браузере, которая следует по этому пути запроса, и ошибка возникает, может быть, один из ста раз. Я не мог наблюдать никаких закономерностей относительно того, когда это произойдет или нет. В журнале доступа, журнале ошибок или системном журнале нет ничего важного.
Мне удалось заставить Go выдавать это сообщение об ошибке с помощью приведенного ниже кода, поэтому похоже, что Apache должен отправлять недопустимые ответы, записывая строку «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()
}
}