Неожиданный 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")