it-swarm.com.de

Berechtigungskopf fehlt in PHP POST anfordern

Ich versuche gerade, den Autorisierungsheader in einem PHP - Skript zu lesen, das ich mit einer POST - Anforderung anrufe. Der Berechtigungsheader wird mit einem Token aufgefüllt. Es scheint, dass der Authorization-Header irgendwie entfernt wurde, bevor er bei meinem PHP -Skript ankommt. Ich führe die Post-Anfrage mit Postman (Chrome-Addon) aus und habe CORS in meinem PHP -Skript aktiviert. Ich habe keinen direkten Zugriff auf den Apache-Server.

HTTP-Anfrage:

Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4,ja;q=0.2
Authorization:Bearer mytoken
Cache-Control:no-cache
Connection:keep-alive
Content-Length:32
Content-Type:text/plain;charset=UTF-8
Host:www.myhost.com
Origin:chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm
 User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)       
 Chrome/38.0.2125.104 Safari/537.36

PHP-Skript:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Authorization, Origin, X-Requested-With, Content-Type,      Accept");
header("Content-Type: application/json");

$headers = getallheaders();
echo $headers['Authorization'];

Das obige Skript gibt '' (= nichts) aus.

20
jimmy

Nach einiger Zeit fand man eine Lösung für dieses Problem. Irgendwie wurde der Autorisierungsheader entfernt und durch Hinzufügen der folgenden Zeilen in meinem .htaccess konnte ich ihn zum Laufen bringen.

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
68
jimmy

Unter dem Array befinden sich Anforderungsheader, die möglicherweise in der $ _SERVER-Variablen fehlen 

$headers = Apache_request_headers();

(Dies gilt insbesondere für den ajax-Header 'HTTP_X_REQUESTED_WITH', der folgendermaßen gefunden wird: $headers['X_REQUESTED_WITH']

2
Grigoreas P.

Ich weiß nicht, warum meine auf NGINX ausgeführte PHP 5.4.45 jeden benutzerdefinierten Header mit Unterstrichen ablehnte:

AKZEPTIERTE: CURLOPT_HTTPHEADER => array ('Authorization: 123456')

VERWEIGERTE: CURLOPT_HTTPHEADER => Array ('my_Authorization: 123456')

Ich hoffe es kann jemandem helfen. Prost

0
luciomonter

Ich musste dies zuerst meiner Apache-Konfigurationsdatei hinzufügen: 

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Für Linux in /etc/Apache2/Apache2.conf

Für Mac (mit Homebrew) in /usr/local/etc/httpd/httpd.conf

Das Hinzufügen von .htaccess funktionierte aus keinem Grund:

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
0
Tech Nomad