Как получить 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 можно долго рассказывать, т.к. задач по реализации взаимодействия двух серверных приложений просто большое количество. Просто знайте, такая возможность есть, и Вы можете воспользоваться ею тогда, когда в этом возникнет необходимость.