Symfony 2.3 getRequest()->Header nicht angezeigt Autorisierungs-Bearer-Token
Ich bin vorbei ein Authorization: Bearer { Token } als eine HTTP-Anforderung an meine Symfony-Rest-Controller.
Meine Anfrage:
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
In Meinem controller:
$this->getRequest()->headers;
Für einige Grund wenn ich mit Symfony ist die Anfrage-Methode der Authorization-header ist nicht verfügbar auf meinem controller. Wenn ich die PHP getallheaders() die Authorization-header zeigt sich, wie erwartet. Irgendwelche Ideen auf, warum Symfony nicht sehen es?
Dank
- Ich erinnere mich, ich hatte irgendwie die gleichen Probleme versuchen zu erreichen, ein server-parameter genannt webauth in Symfony. Ich habe dies in meinem code: $this->get('request')->server; wenn das nicht hilft werde ich weitere Forschung, was ich getan haben, um die server-parameter
- Ich war nicht in der Lage zu erreichen, die der Authorization-header mit $this->get('request')->server;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es sehr wahrscheinlich, beraubt von Apache.
Bearer
ist nicht ein bekanntes Schema, es ist eine Art von proprietärer.Daher, entweder Sie verwenden einen benutzerdefinierten header, wie
X-Bearer-Token: 123456789
oder Sie können versuchen, fügen Sie diese rewrite-Bedingung in den.htaccess
rewrite condition in your .htaccess
. Ich bin verwirrt, weil einige clients wie Android,iOS, Web-clients/Geräte ordnungsgemäß arbeiten, ohne die Notwendigkeit für die rewrite-Bedingung. Aber bei der Verwendung von Android-Reagieren-Native, ist das problem vorhanden.Symfony ist mit php Globale variable
$_SERVER
zu erstellenRequest->headers
variable, aber$_SERVER
enthält nicht alle Header. Für alle Kopfzeilen, die Sie verwenden müssen, die native php-Funktiongetallheaders()
mehr info: http://php.net/manual/en/function.getallheaders.phpEs scheint ein trennen zwischen der Frage und der Antwort akzeptiert. Wenn der Authorization-header verfügbar ist, PHP getallheaders (), dann Apache natürlich nicht Strippen es. Ich denke, dass das problem im Zusammenhang mit der Nutzung von Symfony. $dies->getRequest()->Kopf nicht wieder ein Objekt mit Header, es gibt eine HeaderBag. Vorausgesetzt, der Kopf ist sichtbar getallheaders(), das funktioniert:
Bzw. genauer:
scheint, wie die apache-mod_php "frisst" der authorization-header.
dieser arbeitete für mich:
Können Sie auch apache_request_headers(); um die original-überschriften, die wird der Authorization-header.