2014-10-20 17 views
13

Obecnie próbuję odczytać nagłówek autoryzacji w skrypcie PHP, który wywołuję za pomocą żądania POST. Nagłówek autoryzacji jest zapełniony tokenem. Wygląda na to, że nagłówek Authorization został w jakiś sposób usunięty, zanim dotrze do mojego skryptu PHP. Realizuję post z postmanem (dodatek do Chrome) i włączyłem CORS w moim skrypcie PHP. Nie mam bezpośredniego dostępu do serwera apache.Brak nagłówka autoryzacji w żądaniu PHP POST

HTTP Żądanie:

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 

skrypt PHP:

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']; 

Powyższe wyjścia script '' (= nic).

+0

Ktoś wpadł na pomysł, co jeszcze mogę sprawdzić, aby rozwiązać problem? – jimmy

Odpowiedz

35

Po pewnym czasie znaleziono rozwiązanie tego problemu. W jakiś sposób nagłówek Authorization został usunięty i poprzez dodanie następujących linii w moim pliku .htaccess udało mi się go uruchomić.

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

Miałem ten sam problem przy próbie użycia podstawowej autoryzacji HTTP z moim interfejsem REST na Php 5.4 i Apache. Zmodyfikowałem plik .htaccess, aby wesprzeć RewriteEngine On dla reszty api i podobnie wszystkie nagłówki moich żądań wydawały się tam być, z wyjątkiem autoryzacji, gdy wysyłam do nich zapytanie w PHP. Twoja poprawka jest poprawna, dziękuję! – Deemoe

+1

Rozwiązuje to ten sam problem, który występuje podczas korzystania z CodeIgniter 3 przy użyciu biblioteki codeigniter-restserver, gdy używane są niestandardowe trasy. Co ciekawe, tworzy również dwa nagłówki: "HTTP_AUTHORIZATION" i "REDIRECT_HTTP_AUTHORIZATION", obie z identyczną wartością. – tj111

+0

Niesamowita odpowiedź, działa idealnie. Jeśli masz inne warunki w pliku .htaccess, umieściłem to na górze (pierwsze). – Calin

1

Poniżej tablicy posiada żądania nagłówki, które mogą być brakujące w $ _SERVER zmiennej

$headers = apache_request_headers(); 

(szczególnie ważne dla 'HTTP_X_REQUESTED_WITH' ajax nagłówka, który znajdzie się w ten sposób jako: $headers['X_REQUESTED_WITH']

0

Nie wiem, dlaczego mój php 5.4.45 działający na NGINX odrzucił każdy niestandardowy nagłówek zawierający podkreślenia:

AKCEPTUJĄCY: CURLOPT_HTTPHEADER => array ('Autoryzacja: 123456')

REFUSED: CURLOPT_HTTPHEADER => array ('my_Authorization: 123456')

Mam nadzieję, że może komuś pomóc. Pozdrowienia

Powiązane problemy