2011-01-17 18 views
5

Próbowałem do odbierania żądań HTTP z niestandardowych pól w nagłówkach, ale wydaje się, że mój serwer usuwa je ...Server usuwa pól nagłówka HTTP zwyczaj

Jest to wniosek, że jestem wysłanie do serwera (Przeczytałem to żądanie za pomocą serwera proxy HTTP):

POST /oauth.php/request_token HTTP/1.1 
Host: domain.com 
User-Agent: DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0 
Authorization: OAuth realm="", oauth_consumer_key="ebb942f0d260b06cb533c6133c28408004d343197", oauth_signature_method="HMAC-SHA1", oauth_signature="qPBFAa8XRRbor2%2F%2FQXv6kU3%2F7jU%3D", oauth_timestamp="1295278460", oauth_nonce="E7D6AC76-74CE-4951-8182-7EBF9B382E7E", oauth_version="1.0" 
Accept: */* 
Accept-Language: en-us 
Accept-Encoding: gzip, deflate 
Pragma: no-cache 
Content-Length: 0 
Connection: keep-alive 
Proxy-Connection: keep-alive 

Wydrukowałem nagłówki wniosku po przybyciu na stronę page.php. Widzę, że:

uri http://domain.com/oauth.php/request_token 
parameters 
headers Array 
.... Accept : */* 
.... Accept-Encoding : gzip, deflate 
.... Accept-Language : en-us 
.... Connection : keep-alive 
.... Host : domain.com 
.... User-Agent : DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0 
method POST 

kiedy należy widzieć, że (on pracuje w lokalnej wersji)

uri http://localhost:8888/oauth.php/request_token 
parameters 
headers Array 
.... Accept : */* 
.... Accept-Encoding : gzip, deflate 
.... Accept-Language : en-us 
.... Authorization : OAuth realm="", oauth_consumer_key="582d95bd45d455fa2e5819f88fc0c5a104d2c7ff3", oauth_signature_method="HMAC-SHA1", oauth_signature="agPSFdtlGxXv2sbrz3pRjHlROOE%3D", oauth_timestamp="1295272680", oauth_nonce="667A133C-5071-48AB-9F13-8146425E46B7", oauth_version="1.0" 
.... Connection : keep-alive 
.... Content-Length : 0 
.... Host : localhost:8888 
.... User-Agent : DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0 
method POST 

używam PHP 5.2.17 na serwerze.

Czy masz pomysł, aby pomóc mi rozwiązać ten problem?

Dzięki!

+1

Czy można wyświetlić rzeczywiste nagłówki (lub $ _SERVER []) zamiast tylko wartości? – mario

+0

Czy jesteś pewien, że to nie jest firewall, który rozbiera nagłówki? Wiele firewalli wyświetli listę dozwolonych nagłówków i usunie wszystkie pozostałe. – ircmaxell

+0

Czy istnieje serwer proxy (kałamarnicy) w dowolnym miejscu? – powtac

Odpowiedz

5

Apache usuwa nagłówek Authentication, ponieważ jest to zagrożenie bezpieczeństwa, gdy jest używane z CGI. Czy używasz PHP poprzez CGI?

Myślę, że PHP usuwa również uwierzytelnianie w niektórych okolicznościach. Ponownie istnieje ryzyko, że wystawienie go na skrypty pozwoli jednemu z użytkowników na wykrycie innych użytkowników na tym samym serwerze (np. Jeśli Alice i Bob mają konta).

+0

Tak Używam php z CGI Nie wiedziałem, że Apache rozbiera nagłówek Authentication ... dziwne! – MartinMoizard

+1

Co to jest nagłówek uwierzytelniania, o którym mówisz? –

1

Proszę podać rzeczywiste nazwy wycinanych nagłówków. To pytanie jest bezużyteczne w obecnej formie, zmuszając nas do zgadnięcia ...

Czy sprawdziłeś w Firebug/HTTPFox, czy Twoja przeglądarka faktycznie wysyła te nagłówki? Jeśli serwer nie został specjalnie skonfigurowany do czyszczenia nagłówków, przejdzie on przez dowolne niestandardowe.

Nagłówek autoryzacji, do którego wysyłane są dane OAuth, byłby TYLKO wysyłany przez klienta w odpowiedzi na żądanie 401 "autoryzacji wymagane po stronie serwera". Jeśli nie dodałeś konfiguracji "musisz mieć hasło, aby dostać się do serwera" po stronie serwera, klient nie będzie wysyłać informacji o autorze.

+0

Edytowałem moją wiadomość, teraz możesz zobaczyć nazwy nagłówków. Tak więc ten ważny, który został odcięty, nazywa się "autoryzacją". Nie sprawdziłem jeszcze w Firebug/HTTPFox niczego, ponieważ moje żądanie jest wysyłane z aplikacji na iPhone'a, ale na razie jest wysyłane z symulatora iPhone'a. Robię to żądanie http po tym, jak serwer wysłał 401 wymaganą odpowiedź autoryzacji. – MartinMoizard

+0

W tym miejscu należy umieścić serwer proxy HTTP, który może rejestrować nagłówki przychodzące z emulatora. Sam PHP nie usunie nagłówków, a Apache zwykle też nie, więc najprawdopodobniej Twoja aplikacja ich nie wysyła. –

+0

Co może wyjaśnić, że na lokalnym serwerze działa, a nie wtedy, gdy hostuję mój kod gdzieś indziej? Spróbuję zalogować nagłówki, a dam ci znać ...! Wielkie dzięki – MartinMoizard

6

W rzeczywistości istnieje łatwa łatwa naprawa. Usterka leży w fastcgi. Możesz po prostu dostarczyć plik .htaccess z regułą przepisywania, aby zapisać nagłówek.

<IfModule mod_rewrite.c> 

... 

# Pass Authorization headers to an environment variable 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

</IfModule> 

zasługa tutaj: https://drupal.org/node/1365168

Rozmawiają także o jeszcze prostsze rozwiązanie do niech te nagłówki przechodzą, jeśli używasz wirtualnego hosta.

Powiązane problemy