2009-05-05 13 views
13

Sto tentando di creare un'API REST in PHP e vorrei implementare uno schema di autenticazione simile all'approccio S3 di Amazon. Ciò comporta l'impostazione di un'intestazione "Autorizzazione" personalizzata nella richiesta.

Avevo pensato che sarei stato in grado di accedere all'intestazione con $ _SERVER ['HTTP_AUTHORIZATION'], ma non si trova da nessuna parte in var_dump ($ _ SERVER). La funzione apache_request_headers() risolverebbe il mio problema, ma il mio host implementa PHP come CGI, quindi non è disponibile.

C'è un altro modo per accedere alle intestazioni di richiesta complete in PHP?

risposta

22

Avrai bisogno di fare un po 'mod_rewrite magia per ottenere le intestazioni oltre la barriera CGI, in questo modo:

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

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

Si noti che se si sta utilizzando mod_rewrite per altri scopi, si potrebbe finire per essere $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] .

+0

Che funziona come un fascino, grazie. – vamin

+0

ha funzionato per me! :) +1 – MrTechie

3

Prova

$_ENV['HTTP_AUTHORIZATION'] 

Quando si utilizza l'interfaccia CGI, invece di un'interfaccia Apache modulo, intestazioni HTTP dovrebbero essere disponibili come variabili di ambiente.

Problemi correlati