В PHP можно использовать функцию header()
для отправки заголовков HTTP-ответа клиенту. Однако, если вы используете Curl для отправки запроса, то у вас могут возникнуть проблемы с использованием header()
, так как она должна вызываться до вывода любых данных на страницу.
Проблема в том, что при использовании Curl вы уже открываете соединение с сервером и получаете его ответ, и это означает, что вы уже отправили заголовки ответа. Таким образом, если вы попытаетесь вызвать функцию header()
после использования Curl, то PHP выдаст предупреждение "Cannot modify header information - headers already sent".
Чтобы решить эту проблему, можно воспользоваться параметром CURLOPT_HEADER
при настройке Curl-запроса. Параметр CURLOPT_HEADER
управляет выводом заголовков ответа сервера. Если установить этот параметр в значение true
, то Curl будет включать заголовки ответа в вывод их функцией curl_exec()
, а не отправлять их на вывод PHP.
Вот пример кода, который позволяет сохранить заголовки ответа сервера из Curl-запроса в переменной $headers
:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); // включаем заголовки в вывод $response = curl_exec($ch); // разделяем заголовки и тело ответа $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $headers = substr($response, 0, $headerSize); // можно вывести заголовки при помощи var_dump или использовать их по своему усмотрению var_dump($headers); // продолжаем обработку тела ответа $body = substr($response, $headerSize); curl_close($ch);
Теперь вы можете использовать переменную $headers
для дальнейшей обработки или вывода заголовков ответа, а переменную $body
для обработки или вывода тела ответа.