Вы не показали нам код...
... но похоже, что вы пытаетесь прочитать "ответ" HTTP на запрос HEAD (вместо доступа только к заголовкам ответа HTTP).
Согласно RFC:
https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
Метод HEAD идентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН
вернуть тело сообщения в ответ. Метаинформация содержала
в заголовках HTTP в ответ на запрос HEAD ДОЛЖЕН быть идентичным
к информации, отправленной в ответ на запрос GET. Этот метод может
использоваться для получения метаинформации об объекте, подразумеваемом
запрос без передачи самого тела сущности. Этот метод
часто используется для проверки гипертекстовых ссылок на достоверность, доступность,
и недавняя модификация.
Другими словами, ответ на запрос HEAD не имеет тела. Если вы попытаетесь прочитать его, вы получите EOF. Я подозреваю, что здесь происходит именно это.
Спасибо, что обновили свой вопрос с помощью этого кода. Похоже, вы используете Go.
Попробуйте это:
res, err := http.Head("https://golang.org")
if err != nil {
panic(err)
}
println(res.StatusCode)
И помните: у res не будет тела.
ДОБАВЛЕНИЕ
– Раджеш Сетхи
Я пытался использовать Postman, но он не ответил с информацией HEADER.
Пробовал Curl, пишет "Пустой ответ с сервера".
Приведенный выше код resp, err := http.Head("speed.hetzner.de/100MB.bin")
выдает ту же ошибку "EOF".
– paulsm4
Круто, спасибо. Итак, похоже, ваше исходное предположение верно:
-
Ваш код в порядке: вы не "делаете ничего неправильного" (например, пытаетесь прочитать "тело", которого там нет).
-
Скорее, этот конкретный URL
(speed.hetzner.de) блокирует (или, по крайней мере, отказывается обрабатывать) запросы HEAD.
Вопрос: вы подтвердили, что можете получить действительный ответ HEAD независимо от Go (вы пробовали curl, Postman или аналогичный? Они ответили с информацией HEADER?) Вопрос: Вы нашли жизнеспособное решение кода «Go» (например,
http.Head()
)? Пожалуйста, дайте нам знать!Я пытался с Postman, он не ответил с информацией HEADER. Пробовал Curl, пишет "Пустой ответ с сервера".
``` resp, err := http.Head("speed.hetzner.de/100MB.bin") if err != nil {return err} ``` попробовал приведенный выше код, как вы предложили. он выдает ту же ошибку "EOF".
Круто - спасибо. Итак, похоже, что ваше исходное предположение верно: 1) Ваш код в порядке: вы не «делаете ничего неправильного» (например, пытаетесь прочитать «Тело», которого там нет). 2) Скорее, этот конкретный URL-адрес (speed.hetzner.de) блокирует (или, по крайней мере, отказывается обрабатывать) запросы HEAD.