PHP: Разработка микрофреймворка
Теория: Заголовки HTTP
Работа с HTTP-заголовками в PHP
В PHP работа с HTTP-заголовками встроена в язык. Мы можем читать заголовки входящего запроса и отправлять заголовки в ответе без дополнительных библиотек.
Типичный пример - обработчик авторизации. После успешной проверки данных сервер делает редирект на главную страницу.
Как получить заголовки запроса
Самый удобный способ - функция getallheaders().
Она возвращает заголовки в привычном виде, как их отправил клиент.
Заголовки также доступны в $_SERVER, но формат там менее удобный:
- Имена преобразованы в верхний регистр.
- Перед именем добавлен префикс
HTTP_. - Дефисы заменены на подчеркивания.
Поэтому для прикладной логики чаще используют getallheaders().
Как отправить заголовки ответа
Для кода ответа используют http_response_code(), а для самих заголовков - header().
Пример из обработчика POST /sign_in:
Этого достаточно, чтобы клиент перешел на новый URL.
Что происходит при редиректе
Если посмотреть ответ через curl, видно следующее:
- Сервер возвращает статус
302 Found. - Сервер отправляет заголовок
Location. - Клиент делает новый запрос по адресу из
Location.
Проверка без перехода:
Проверка с автоматическим переходом по редиректу:
Флаг -L включает follow redirect: curl сам выполняет следующий запрос.
Практический вывод
В этой теме важно запомнить базовую связку:
- Читать заголовки через
getallheaders(). - Выставлять статус через
http_response_code(). - Отправлять заголовки через
header().
С этой основой можно уверенно реализовать авторизацию, редиректы и другие стандартные HTTP-сценарии.

