Я пытаюсь создать 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 .