Pergunta

Eu estou tentando criar uma API REST em PHP e eu gostaria de implementar um esquema de autenticação semelhante à abordagem S3 da Amazon. Isso envolve a definição de um costume header 'autorização' na solicitação.

Eu tinha pensado que eu seria capaz de acessar o cabeçalho com $ _SERVER [ 'HTTP_AUTHORIZATION'], mas é longe de ser encontrada em var_dump ($ _ SERVER). Os apache_request_headers () função seria resolver o meu problema, mas meus implementos acolhimento PHP como CGI, por isso é indisponível.

Existe outra maneira eu posso acessar os cabeçalhos de solicitação completas em PHP?

Foi útil?

Solução

Você vai precisar fazer alguma feitiçaria mod_rewrite para obter seus cabeçalhos passado a barreira CGI, assim:

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

<?php
    $auth = $_SERVER['HTTP_AUTHORIZATION'];
?>

Note que se você estiver usando mod_rewrite para outros fins, que poderia acabar por ser $_SERVER['REDIRECT_HTTP_AUTHORIZATION'].

Outras dicas

Tente

$_ENV['HTTP_AUTHORIZATION']

Ao usar interface CGI em vez de interface de módulo do Apache, HTTP cabeçalhos devem estar disponíveis como variáveis ??de ambiente.

Há uma extensão PECL fantástica que permite a todos os tipos de HTTP acesso relacionado. PECL_HTTP e mais especificamente http://php.net/http e http://php.net/manual/en/function.http-get-request-headers.php .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top