ugrás a tartalomhoz

$_SERVER['HTTP_HOST']

T.G · 2004. Júl. 20. (K), 11.18
Egy furcsa dologra lettem figyelmes és mivel elég sokat szívtam vele megosztom.
Egy IE5 felhasználó hívta fel a figyelmem, hogy néha elszáll az egyik oldal. Nincs tartalom, a képek nem jönnek be és különben is... Én rögtön az IE-re fogtam, talán nem is ok nélkül. :) De most nem a css támogatással volt a hiba, hanem sokkal szokatlanabb helyen.
Az oldal leegyszerűsített változata:

<?php
echo isset($_SERVER['HTTP_HOST'])?'jól':'rosszul',' működik...';
?>
Azaz abban az esetben, ha nem tudom lekérdezni a hostot, akkor nem megfelelőn működik az oldal...

Hogy néz ki egy egyszerű, szabályos oldalkérés, és rá mi a válasz (fölösleges headereket elhagyva)?
(ha a fenti fájl localhoston, a http_host.php néven található)
GET /http_host.php HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
jól működik...

Egy nem helyes lekérés?
GET http://localhost/http_host.php HTTP/1.1

HTTP/1.1 400 Bad Request

Végül egy furcsa lekérés?
GET http://localhost/http_host.php HTTP/1.0

HTTP/1.1 200 OK
rosszul működik...

Számomra ez kicsit php bug gyanús, vagy apache bug gyanús... valami gyanús...
 
1

szabványok...

bbalint · 2004. Júl. 20. (K), 13.15
az úgy van, hogy a HTTP/1.1-es szabványban van kikötve, hogy mindenképp kell Host: fejlécet küldeni...

hogy miért nincs néha, azt nem tudhatom.
nekemnek, ami jobb volt az a $_SERVER['SERVER_NAME'], de. ez nem oldja meg a dolgot...

talán szerveroldalon is lehet(ne) valami... bár nem hinném.

meg kéne nézni "közelebbről", hogy milyen internet exploiterrel és mikor jön létre az említett hibácska,

GET http://localhost/http_host.php HTTP/1.1

ez nem helyes lekérés, hiányzik az említett Host: fejléc. viszont így már helyes volna...
GET http://localhost/http_host.php HTTP/1.0


bbalint
2

pedig a $_SERVER['SERVER_NAME']

T.G · 2004. Júl. 20. (K), 15.35
Persze, persze... Inkább csak azért írtam le, mert nem kis idő volt, míg rájöttem a hibára...

GET http://localhost/http_host.php HTTP/1.0 hatására
$_SERVER['HTTP_HOST'] nem jön létre és
$_SERVER['SERVER_NAME'] létre jön.

Bár kis jószándékkal a php-s fiúk adhatnának értéket ekkor is a $_SERVER['HTTP_HOST']-nak, mert explicit ott van.

Amúgy a kérdéses IE:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Azt viszont nem tudom, hogy mit csinál a kedves felhasználó, amikor ilyen kérést küld a böngészője. (leírásából annyit tudok, hogy néha amikor back-et nyom ... el lehet képzelni, hogy mire gondoltam az első levélnél: béna böngészőjével back-et nyom és azért a szerver hibás adatot küld???... és tényleg)
3

ö

bbalint · 2004. Júl. 20. (K), 16.48
az úgy van, hogy a $_SERVER['HTTP_*'] változók mind a kapott HTTP fejlécek...
ebből az User-Agent fejlécből meg nagyon sok mindent meg lehetett tunni... inkább egy Súgó > Névjegy menüparancs hatására előjövő ablakban van érdemleges informácijó a pontos veriószámról,