Symfony 2.3 getRequest()->headers ne montrant pas d'Autorisation Porteur du Jeton
Je suis de passage d'une Autorisation: Porteur { Token } comme une requête HTTP à mon Symfony Reste Contrôleur.
Ma Demande:
GET /app_dev.php/api/members HTTP/1.1
Host: localhost
Authorization: Bearer 123456789
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
À l'intérieur de Mon contrôleur:
$this->getRequest()->headers;
Pour quelque raison que quand j'utilise Symfony Demande de la méthode de l'en-tête d'Autorisation n'est pas disponible pour mon contrôleur. Lorsque j'utilise le PHP est getallheaders() l'Autorisation d'en-tête s'affiche comme prévu. Toutes les Idées sur pourquoi Symfony n'est pas le voir?
Grâce
Je me souviens que j'avais en quelque sorte le même problème en essayant d'atteindre un paramètre de serveur appelé webauth dans Symfony. J'ai ceci dans mon code: $this->get('request')->serveur; si cela ne vous aide pas, je vais poursuivre les recherches de ce que j'ai fait pour obtenir le paramètre de serveur
Je n'étais pas en mesure d'atteindre l'en-tête d'Autorisation via $this->get('request')->serveur;
Je n'étais pas en mesure d'atteindre l'en-tête d'Autorisation via $this->get('request')->serveur;
OriginalL'auteur Pathsofdesign | 2013-10-18
Vous devez vous connecter pour publier un commentaire.
Il est plus que probable dépouillé par Apache.
Bearer
n'est pas un régime, c'est une sorte de propriété.Donc, soit vous utilisez un en-tête personnalisé, comme
X-Bearer-Token: 123456789
ou vous pouvez essayer d'ajouter cette condition de réécriture dans votre.htaccess
Désolé, j'ai placé la Réécriture de la situation au bas de .htaccess avec pas de résultats, mais quand j'ai passé le code en haut de .htaccess ça fonctionne. Merci pour votre aide.
Êtes-vous en mesure d'ajouter un peu d'explication sur 1. pourquoi il est visible à PHP getallheaders() et 2. pourquoi cette règle de réécriture d'œuvres?
C'était mon problème, merci beaucoup.
Est-il un autre moyen, sans faire le
rewrite condition in your .htaccess
. Je suis confus parce que certains clients comme Android,iOS, Web clients/les appareils fonctionnent correctement sans la nécessité de réécrire la condition. Mais lors de l'utilisation d'Android-Réagir-Native, le problème existe.OriginalL'auteur Boris Guéry
Symfony est à l'aide de php variable globale
$_SERVER
pour créerRequest->headers
variable, mais$_SERVER
ne contient pas tous les en-têtes. Pour obtenir tous les en-têtes vous devez utiliser la fonction native de phpgetallheaders()
plus d'infos: http://php.net/manual/en/function.getallheaders.phpOriginalL'auteur Nikdyvice
Il semble y avoir un décalage entre la question et la accepté de répondre. Si l'en-tête d'Autorisation est disponible pour PHP getallheaders() Apache n'est pas la dépouiller. Je suppose que le problème est lié à l'utilisation de Symfony. $this->getRequest()->headers ne retourne un objet contenant les en-têtes, elle renvoie un HeaderBag. En supposant que l'en-tête est visible à getallheaders(), cela fonctionne:
Ou plus précisément:
Je vais avoir le même problème sur Symfony3. Je peux obtenir l'autorisation d'en-tête à partir de matières de php, mais pas de symfony
OriginalL'auteur dazweeja
semble que l'apache mod_php "mange" de l'en-tête d'autorisation.
cela a fonctionné pour moi:
OriginalL'auteur Blafasel42
Vous pouvez également utiliser apache_request_headers(); pour obtenir l'original des en-têtes qui ont l'Autorisation d'en-tête.
OriginalL'auteur user1842104