¿Cómo puedo acceder a los encabezados de solicitud que no aparecen en $ _SERVER?

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

  •  05-07-2019
  •  | 
  •  

Pregunta

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 puede encontrar 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 otra forma de acceder a los encabezados de solicitud completos en PHP?

¿Fue útil?

Solución

Tendrás que hacer alguna hechicería de mod_rewrite para hacer que tus encabezados pasen la barrera CGI, así:

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

<?php
    $auth = 

Tendrás que hacer alguna hechicería de mod_rewrite para hacer que tus encabezados pasen la barrera CGI, así:

<*>

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

SERVER['HTTP_AUTHORIZATION']; ?>

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

Otros consejos

Probar

Probar

<*>

Al usar la interfaz CGI en lugar de la interfaz del módulo Apache, los encabezados HTTP deberían estar disponibles como variables de entorno.

ENV['HTTP_AUTHORIZATION']

Al usar la interfaz CGI en lugar de la interfaz del módulo Apache, los encabezados HTTP deberían estar disponibles como variables de entorno.

Hay una fantástica extensión PECL que permite todo tipo de acceso relacionado con HTTP. PECL_HTTP y más específicamente http://php.net/http y http://php.net/manual/en/function.http-get-request-headers.php .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top