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

StackOverflow https://stackoverflow.com/questions/827060

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

RewriteEngine on
RewriteRule .? - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

<?php
    $auth = 

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

<*>

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

SERVER['HTTP_AUTHORIZATION']; ?>

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

Другие советы

Попробуйте

Попробуйте

<*>

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

ENV['HTTP_AUTHORIZATION']

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top