Как получить доступ к заголовкам запроса, которые не отображаются в $ _SERVER?

Я пытаюсь создать REST API в PHP, и я хотел бы реализовать схему аутентификации, аналогичную подходу S3 от Amazon. Это включает настройку настраиваемого заголовка «Авторизация» в запросе.

Я думал, что смогу получить доступ к заголовку с помощью $ _SERVER ['HTTP_AUTHORIZATION'], но его не найти в var_dump ($ _ SERVER). Функция apache_request_headers () решила бы мою проблему, но мой хост реализует PHP как CGI, поэтому он недоступен.

Есть ли другой способ получить доступ к полным заголовкам запросов в PHP?

Вам нужно будет сделать mod_rewrite wizardry, чтобы получить заголовки мимо CGI-барьера, например:

 RewriteEngine on RewriteRule .? - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] <?php $auth = $_SERVER['HTTP_AUTHORIZATION']; ?> 

Обратите внимание: если вы используете mod_rewrite для других целей, он может оказаться $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] .

Пытаться

 $_ENV['HTTP_AUTHORIZATION'] 

При использовании интерфейса CGI вместо интерфейса Apache Module, заголовки HTTP должны быть доступны как переменные среды.

Существует фантастическое расширение PECL, которое позволяет использовать все виды HTTP-доступа. PECL_HTTP и более конкретно http://php.net/http и http://php.net/manual/en/function.http-get-request-headers.php .