РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1052 of 1593 menu

Метод http.Client.Head

Метод http.Client.Head выполняет HTTP HEAD-запрос к указанному URL. Он отправляет запрос без тела и получает только заголовки ответа. Первым параметром метод принимает строку с URL-адресом. Метод возвращает указатель на http.Response и ошибку, если она возникла. HEAD-запросы полезны для проверки доступности ресурса, получения метаданных (например, размер файла, тип контента, дата модификации) без загрузки всего содержимого.

Синтаксис

resp, err := client.Head(url)

Базовый пример

Давайте выполним HEAD-запрос к публичному ресурсу и выведем статус ответа:

package main import ( "fmt" "net/http" ) func main() { client := &http.Client{} resp, err := client.Head("https://example.com") if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() fmt.Println("Status:", resp.Status) }

Результат выполнения кода:

"Status: 200 OK"

Пример

Давайте прочитаем заголовки ответа, полученные в результате HEAD-запроса, и выведем их на экран:

package main import ( "fmt" "net/http" ) func main() { client := &http.Client{} resp, err := client.Head("https://example.com") if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() fmt.Println("Content-Type:", resp.Header.Get("Content-Type")) fmt.Println("Content-Length:", resp.Header.Get("Content-Length")) fmt.Println("Server:", resp.Header.Get("Server")) }

Результат выполнения кода:

"Content-Type: text/html; charset=UTF-8" "Content-Length: 1256" "Server: ECS (dce/0198)"

Пример

Если ресурс недоступен, метод вернет ошибку. Давайте попробуем выполнить HEAD-запрос к несуществующему URL:

package main import ( "fmt" "net/http" ) func main() { client := &http.Client{} resp, err := client.Head("https://example.com/notfound") if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() fmt.Println("Status:", resp.Status) }

Результат выполнения кода:

"Status: 404 Not Found"

Пример

HEAD-запрос можно использовать для проверки существования ресурса без загрузки тела ответа. Давайте проверим доступность файла на сервере:

package main import ( "fmt" "net/http" ) func main() { client := &http.Client{} url := "https://example.com/file.pdf" resp, err := client.Head(url) if err != nil { fmt.Println("Error:", err) return } defer resp.Body.Close() if resp.StatusCode == http.StatusOK { fmt.Println("File exists") } else { fmt.Println("File not found:", resp.Status) } }

Результат выполнения кода:

"File not found: 404 Not Found"

Смотрите также

  • метод http.Client.Get,
    который выполняет GET-запрос и получает тело ответа
  • метод http.Client.Post,
    который выполняет POST-запрос с телом
  • метод http.Client.Do,
    который выполняет произвольный HTTP-запрос
  • функцию http.Head,
    которая выполняет HEAD-запрос используя DefaultClient
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить