Recupero dell'intestazione di authorization personalizzata dalla richiesta PHP in entrata

Quindi sto cercando di analizzare una richiesta in arrivo in PHP che ha il seguente set di intestazione:

Authorization: Custom Username 

Semplice domanda: come mai ci metto le mani sopra? Se fosse Authorization: Basic , potrei get il nome utente da $_SERVER["PHP_AUTH_USER"] . Se era X-Custom-Authorization: Username , potrei get il nome utente da $_SERVER["HTTP_X_CUSTOM_AUTHORIZATION"] . Ma nessuno di questi è impostato da un'authorization personalizzata, var_dump($_SERVER) non rivela alcuna menzione dell'intestazione (in particolare, AUTH_TYPE è mancante) e le funzioni di PHP5 come get_headers() funzionano solo sulle risposte alle richieste in output. Sto eseguendo PHP 5 su Apache con un'installazione Ubuntu pronta all'uso.

Se utilizzerai solo Apache, potresti dare un'occhiata a apache_request_headers() .

Per l'authentication basata su token:

  $token = null; $headers = apache_request_headers(); if(isset($headers['Authorization'])){ $matches = arrays(); preg_match('/Token token="(.*)"/', $headers['Authorization'], $matches); if(isset($matches[1])){ $token = $matches[1]; } } 

Per lo background, perché Apache filtra l'intestazione Authorization : https://stackoverflow.com/a/17490827

Soluzioni che dipendono dal module di Apache utilizzato per passare la richiesta all'applicazione:

mod_wsgi, mod_fcgid:

cgi:

Altri hack: massaggiare le intestazioni in questa domanda:

  • La busta delle intestazioni di richiesta è mancante Intestazione di authorization in Symfony 2?

  • Apache 2.4 + PHP-FPM e intestazioni di authorization

Aggiungi questo codice nel tuo .htaccess

 RewriteEngine On RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

Passa la tua intestazione come Authorization: {auth_code} e finalmente ottieni il codice di authorization usando $_SERVER['HTTP_AUTHORIZATION']