apache_request_headers — Получает список всех заголовков HTTP-запроса
Описание
Получает список всех заголовков HTTP текущего запроса. Работает на веб-серверах Apache и FastCGI.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Ассоциативный массив, содержащий все HTTP-заголовки текущего запроса, или false в случае возникновения ошибки.
Список изменений
Версия
Описание
7.3.0
Эта функция стала доступна в SAPI FPM.
Примеры
Пример #1 Пример использования apache_request_headers()
Результатом выполнения данного примера будет что-то подобное:
Примечания
Смотрите также
User Contributed Notes 5 notes
I didn’t found a replacement for apache_request_headers() in PHP::Compat (http://pear.php.net/package/PHP_Compat) so I wrote my own:
Although we expect to see headers in mixed case, the standard RFC2616 demands that «field names are case-insensitive». PHP delivers the headers exactly untouched in whatever way the client sent them. Potentially you should expect to get any type of uppercase or lowercase or mixed.
Thus, if you want to be standards compliant, you must loop through every key and check it in a case-insensitive manner, instead of doing the obvious thing and using the name of the header as an array index.
The headers are then available in PHP as [ ‘HTTP_IF_MODIFIED_SINCE’ ]; $_SERVER [ ‘HTTP_IF_NONE_MATCH’ ]; ?>
I’ve tested this on PHP/5.1.6, on both Apache/2.2.3/Win32 and Apache/2.0.54/Unix, and it works perfectly.
Note: if you use RewriteRules already for clean URLs, you need to put the above rules AFTER your existing ones.
A slightly modified version from limalopex.eisfux.de. Fixes the missing Headers Content-Type and Content-Length and makes it Camel-Case.
Как прочитать заголовок запроса в PHP
Как я должен читать любой заголовок в PHP?
14 ответов
если: вам нужен только один заголовок, вместо все заголовки, самый быстрый метод-это:
ТО ЕСЛИ: вы запускаете PHP как модуль Apache или, начиная с PHP 5.4, используя FastCGI (простой метод):
другое: в любом другом случае вы можете использовать (реализация userland):
к примеру X-Requested-With можно найти в:
начиная с PHP 5.4.0 вы можете использовать getallheaders функция, которая возвращает все запрошенные заголовки в виде ассоциативного массива:
ранее эта функция работала только тогда, когда PHP работал как модуль Apache/NSAPI.
strtolower отсутствует в нескольких предлагаемых решениях, RFC2616 (HTTP/1.1) определяет поля заголовка как объекты, нечувствительные к регистру. Все это, а не только стоимостью часть.
поэтому предложения, как только разбор соответствующий http_ записи неверны.
обратите внимание на тонкие различия с предыдущими предложениями. Функция здесь также работает на php-fpm (+nginx).
передать ключ заголовка эта функция вернет его значение вы можете получить значение заголовка с помощью for loop
чтобы сделать вещи простыми, вот как вы можете получить только один вы хотите:
или когда вам нужно получить по одному за раз:
я использовал CodeIgniter и использовал код ниже, чтобы получить его. Может пригодиться кому-то в будущем.
это выглядит намного проще, чем большинство примеров, приведенных в других ответах. Это также получает метод (GET/POST / etc.) и URI, запрошенный при получении всех заголовков, которые могут быть полезны, если вы пытаетесь использовать его в журнале.
apache_request_headers
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
apache_request_headers — Получает список всех заголовков HTTP-запроса
Описание
Получает список всех заголовков HTTP текущего запроса.
Возвращаемые значения
Ассоциативный массив, содержащий все HTTP-заголовки текущего запроса, или FALSE в случае ошибки.
Список изменений
Версия
Описание
5.5.7
Эта функция стала доступна в CLI сервере.
5.4.0
Данная функция стала доступной при использовании FastCGI. До этого поддерживалась только в случае использования PHP как модуля Apache.
4.3.3
Начиная с PHP 4.3.3 вы также можете использовать эти функции с модулем NSAPI в серверах Netscape/iPlanet/SunONE.
Примеры
Пример #1 Пример использования apache_request_headers()
Результатом выполнения данного примера будет что-то подобное:
Примечания
Смотрите также
Коментарии
I didn’t found a replacement for apache_request_headers() in PHP::Compat (http://pear.php.net/package/PHP_Compat) so I wrote my own:
The headers are then available in PHP as [ ‘HTTP_IF_MODIFIED_SINCE’ ]; $_SERVER [ ‘HTTP_IF_NONE_MATCH’ ]; ?>
I’ve tested this on PHP/5.1.6, on both Apache/2.2.3/Win32 and Apache/2.0.54/Unix, and it works perfectly.
Note: if you use RewriteRules already for clean URLs, you need to put the above rules AFTER your existing ones.
A slightly modified version from limalopex.eisfux.de. Fixes the missing Headers Content-Type and Content-Length and makes it Camel-Case.
Although we expect to see headers in mixed case, the standard RFC2616 demands that «field names are case-insensitive». PHP delivers the headers exactly untouched in whatever way the client sent them. Potentially you should expect to get any type of uppercase or lowercase or mixed.
Thus, if you want to be standards compliant, you must loop through every key and check it in a case-insensitive manner, instead of doing the obvious thing and using the name of the header as an array index.
Call to undefined function apache_request_headers()
I’ve just switched my scripts to a different server. On the previous server this worked flawlessly, and now that I’ve switched them to a different server, I can’t understand the problem.
I’m not sure it would help, but here’s the relevant code.
PHP Version is: PHP 5.3.2
6 Answers 6
You can use the following replacement function:
From the docs, before the release of PHP 5.4.0:
This function is only supported when PHP is installed as an Apache module.
PHP 5.4.0 and later support this function unconditionally.
if php is installed as an Apache module:
else, go to .htaccess file and add:
You can then access request headers using any of these:
As suggested in the other answer here, I have used the function from the comments in the PHP documentation, but found that it’s suboptimal, hard to read/maintain, and not complete compared to the (non-conforming) casing of some headers.
So because I needed to really be able to rely on it, I recoded it to be more obvious and handle more edge-cases better as well – the original code even states «do some nasty string manipulations to restore the original letter case» and «this should work in most cases», which doesn’t sound nice for something you should be able to depend on.
Как отправить или получить HTTP заголовки запроса (браузера или другого клиента) на PHP
HTTP заголовки отправляются практически всегда, при каждом запросе любой веб-страницы. Они позволяют сообщить браузеру или другому клиенту информацию о выдаваемом контенте, могут содержать ряд настроек. Известно, что заголовки бывают двух типов:
Как отправить HTTP заголовки запроса
Это можно сделать, если используется свой клиент для запроса на сервер. Например, это может быть простой запрос при помощи библиотеки CURL:
Также надо сказать, что у библиотеки CURL есть свои предопределенные константы, которые читаются сервером как заголовки. Например, можно отправить HTTP заголовок User-Agent или другие при помощи подобного кода:
Как получить HTTP заголовки запроса
Получить заголовки может понадобиться для разных целей, для этого используются специальные возможности языков программирования. Для получения заголовков в PHP есть несколько функций. Ниже приводятся функции для получения заголовков на PHP:
Для получения заголовков можно использовать любую функцию. Часто применяется функция getallheaders:
Как видно из статьи, работать с HTTP заголовками довольно просто, для этого достаточно использовать специальные средства языка программирования PHP.