2009-05-05 13 views
13

Estoy intentando crear una API REST en PHP y me gustaría implementar un esquema de autenticación similar al enfoque S3 de Amazon. Esto implica establecer un encabezado de 'Autorización' personalizado en la solicitud.

Pensé que podría acceder al encabezado con $ _SERVER ['HTTP_AUTHORIZATION'], pero no se encuentra en var_dump ($ _ SERVER). La función apache_request_headers() resolvería mi problema, pero mi host implementa PHP como CGI, por lo que no está disponible.

¿Hay alguna otra manera en que pueda acceder a los encabezados de solicitud completos en PHP?

Respuesta

22

Tendrá que hacer algunas mod_rewrite magia para conseguir sus cabeceras más allá de la barrera de CGI, así:

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

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

Tenga en cuenta que si usted está utilizando mod_rewrite para otros fines, podría llegar a ser $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] .

+0

Eso funciona como un amuleto, gracias. – vamin

+0

¡Trabajó para mí! :) +1 – MrTechie

3

Trate

$_ENV['HTTP_AUTHORIZATION'] 

Cuando se utiliza la interfaz CGI en lugar de la interfaz del módulo de Apache, cabeceras HTTP deben estar disponibles como variables de entorno.

Cuestiones relacionadas