CGI definíció

Mivel ez a jegyzet nem referencia, arra ott van az RFC, ezért itt egy kicsit kevésbé precízen, de erőm szerint nem pongyolán következik a cgi szabvány leírása.

Egy cgi program ugyan azon a gépen fut, mint a webszerver. A cgi programot a webszerver processz indítja el, mint gyerekprocesszt. Azt, hogy melyik programot kell elindítani a webszervernek a http kérés URL-jéből, és természetesen a konfigurációs fáljaiból találja ki. A processz parancssor-argumentumként megkapja a http kérés GET paramétereit, azaz azt a füzért, amelyik általában az URL-ben a kérdőjel után áll. A szabványos bemeneten pedig megjelenik a http kérés POST paramétere, vagyis az az állomány, amely a http kérés fejléce után következik egészen a HTTP kérés végéig. A fejlécet nem kapja meg a cgi processz, semmi köze hozzá, hiszen az tartalmazhat jelszót, amelyet a webszerver maga ellenőriz.

A http fejlécből kiszedhető információk egy részét környezeti változókban kapja meg a cgi processz. Ilyen például a HTTP_ACCEPT környezeti változó, amely azt mondja meg, hogy a kliens milyen típusú információ elfogadását jelezte a http kérésben.

A cgi processz szabványos kimenetét figyeli a webszerver, és ami itt megjelenik azt küldi a kliensnek. Egyes webszerver szoftverek megkívánják, hogy a cgi processz a http válasz fejlécét is előállítsa, mások ezt maguktól a visszaadott html oldal elé teszik.

A Microsoft IIS4.0 például elfogadja, ha megadjuk a http fejlécet, de ha valamelyik szükséges rész hiányzik, például a válasz mime típusa, akkor azt a válasz elé teszi.

Az Apache webszerver nem viseli el, ha a cgi program által a szabványos kimenetre kiírt első sor

HTTP/1.0 200 OK

Ehelyett a
Status: 200 OK

sort kell a cgi processznek visszadnia, amelyet maga az Apache szerver értelmez, és ennek alapján állítja elő a http válasz fejlécének első sorát. Ugyanakkor ha a státusz 200 OK akkor ezt a sort nem kell kiírnia a cgi programnak, mert alaphelyzetben az Apache ezt feltételezi.

Példákon keresztül nézzük meg, hogy hogyan kapja meg a cgi program a paramétereit, illetve azt is megnézhetjük, hogy hogyan kell dekódolni ezeket a paramétereket.


Verhás Péter Home Page . . . . . . CGI röviden, tartalomjegyzék