Неожиданный EOF с использованием GO http-клиента
Я учусь идти и наткнулся на эту проблему.
Я просто загружаю содержимое веб-страницы с помощью HTTP-клиента:
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://mail.ru/", nil)
req.Close = true
response, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer response.Body.Close()
content, err := ioutil.ReadAll(response.Body)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(content)[:100])
}
Я unexpected EOF
ошибка при чтении ответа. В то же время переменная содержание полное содержание страницы.
эта ошибка появляется только при загрузке https://mail.ru/
содержание. С другими URL-адресами все работает нормально-без каких-либо ошибок.
я использовал curl для загрузки этого содержимого страницы - все работает как ожидаемый.
Я немного смущен - что здесь происходит?
Go v1.2, пробовал на Ubuntu и MacOS X
1 ответов
похоже на этот сервер (Apache 1.3, wow!) обслуживает усеченный ответ gzip. Если вы явно запросите identity
кодировка (предотвращение добавленияgzip
сам), вы не получите ErrUnexpectedEOF
:
req.Header.Add("Accept-Encoding", "identity")