Как получить HTTP заголовки сервера?

Немного вступления, перед тем как говорить об основной теме. Как известно согласно протоколу HTTP передача данных происходит посредством отправки специальных служебных заголовков. Привычная схема клиент-серверного взаимодействия, это когда клиент – отправляет запрос, сервер возвращает ответ. Давайте рассмотрим пример, как можно просмотреть возвращаемые HTTP заголовки сервера, при запросе. Для этих целей удобно воспользоваться cURL.

В PHP (начиная от версии 4.0.2) есть поддержка библиотеки функций libcurl, которая позволяет организовать взаимодействие с различными серверами, по разным протоколам, с синтаксисом URL. На данный момент, библиотека поддерживает такие протоколы как: http, https, ftp, gopher, telnet, dict, file, и ldap. Кроме того, умеет работать с сертификатами HTTPS, отправлять POST и PUT запросы на HTTP сервера, выполнять передачу файлов по протоколу HTTP и FTP (здесь нужен так же будет модуль FTP), работать с прокси-серверами, cookies и аутентификации пользователей.
Рассмотрим простой пример отправки запроса, и получения HTTP-заголовков с сервера, посредством использования cURL.

Код
 <?php if($curl = curl_init()) {     curl_setopt($curl,CURLOPT_URL,'http://yournet.kz');     curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);     curl_setopt($curl,CURLOPT_NOBODY,true);     curl_setopt($curl,CURLOPT_HEADER,true);     $out = curl_exec($curl);     echo $out;     curl_close($curl); } ?> 

Первым делом необходимо инициализировать сеанс cURL, выполняет это функция curl_init, в качестве результата она возвращает дескриптор, с которым будут работать функции curl_setopt(), curl_exec, curl_close().

Параметры сеанса задаются с помощью функции curl_setopt:
CURLOPT_URL = «http://yournet.kz» — URL сайта, куда отправляем запрос
CURLOPT_RETURNTRANSFER = true — Вернуть ответ, не выводя в браузер
CURLOPT_NOBODY = true — Не отправлять содержимое самого документа
CURLOPT_HEADER = true — Отправить HTTP-заголовки в ответе

После того как основные параметры заданы, мы выполняем запрос посредством функции curl_exec(), а результат записываем и выводим через переменную $out. После этого необходимо закрыть дескриптор соединения, делается это с помощью функции curl_close().

О том, где можно использовать возможности cURL можно долго рассказывать, т.к. задач по реализации взаимодействия двух серверных приложений просто большое количество. Просто знайте, такая возможность есть, и Вы можете воспользоваться ею тогда, когда в этом возникнет необходимость.

1299