J’envoie une requête Ajax à mon serveur PHP / Apache. La demande contient un en-tête d’ Authorization
, comme illustré ci-dessous dans une capture d’écran des outils de développement de mon navigateur:
Lors des tests sur mon serveur Apache local, je peux accéder à l’en-tête Authorization
de PHP en utilisant apache_request_headers()
. Cependant, sur mon serveur de production (sur un hébergement Linux partagé), l’en-tête est absent du tableau renvoyé par apache_request_headers
, qui ressemble à ceci:
array(10) { ["Cookie"] => ssortingng(31) "_ga=GA1.2.1071821587.1446317606" ["Accept-Language"] => ssortingng(14) "en-US,en;q=0.8" ["Accept-Encoding"] => ssortingng(19) "gzip, deflate, sdch" ["Referer"] => ssortingng(27) "http://goaunited.com/admin/" ["User-Agent"] => ssortingng(110) "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" ["Accept"] => ssortingng(33) "application/json, text/plain, */*" ["Cache-Control"] => ssortingng(8) "no-cache" ["Pragma"] => ssortingng(8) "no-cache" ["Connection"] => ssortingng(5) "close" ["Host"] => ssortingng(13) "goaunited.com" }
Pourquoi l’en-tête Authorization
n’est-il pas inclus dans la réponse apache_request_headers()
sur mon serveur de production? Qu’est-ce qui pourrait causer son omission?
Après une recherche rapide, il est possible de définir une règle de réécriture qui fonctionne
RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Quelqu’un peut-il me dire ce qu’il fait?
Oui..
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
ou
SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
..in .htaccess travaille pour moi ..