Mi a közös átjáró interfész (CGI)? – CloudSavvy IT

Avatar admin | 2021.03.30. 3 Views 0 Likes 0 Ratings

3 Views 0 Ratings Rate it

Fotó az Ethernet-kábelekről egy szerveren

A Common Gateway Interface (CGI) egy szabvány, amely meghatározza, hogy a külső programok miként tudnak információkat szolgáltatni a webszerverekhez. A CGI mechanizmust biztosít az olyan webszerverekhez, mint az Apache, hogy adatokat cseréljenek olyan programozási nyelvekkel, mint a Perl.

A CGI az az egyik legrégebbi az internetes infrastruktúra elemei. Ma is széles körben használják, annak ellenére, hogy újabb alternatívák helyettesítették.

A webkiszolgáló szoftver hagyományosan statikus weboldalak kiszolgálására korlátozódott. A CGI szkriptek lehetővé tették a dinamikus válaszok, amikor egy kérés érkezik.

A HTTP szerverek szabványosítása

CGI volt célja, hogy biztosítsa a HTTP-szerver információkhoz való hozzáférés szabványosított módja a programozási nyelvek számára. Bármely HTTP szerver párosítható bármilyen programozási nyelvvel, feltéve, hogy mindkettő betartja a CGI specifikációt.

A CGI-kompatibilis kiszolgálók a következőhöz hasonló folyamat segítségével kezelik a kéréseket:

  1. Új kérés érkezett: /example.pl.
  2. A webszerver felismeri example.pl mint futtatható CGI szkript, tehát meghívja a szkriptet.
  3. A Perl CGI szkript minden adatot megkap a kérelemről, például URL-jét és HTTP fejléceit.
  4. Az example.pl szkript fut; kimenete HTTP-válaszként visszakerül a webkiszolgálóra emisszió céljából.

A fent vázolt folyamat éles ellentétben áll a webszerver rendszeres működésével. Alapvető kérés a /example.pl visszaadná a fájl tartalmát. Ha a fájl nem létezik, akkor kap egy 404 válasz helyett.

A CGI használata esetén a kérelemnek nem kell a lemezen lévő valós fájlhoz térképeznie. Ehelyett egy felhasználó által definiált program fut. A program felelős az ügyfélnek küldendő kimenet létrehozásáért. A webszerver már nem foglalkozik a válasz tényleges tartalmával.

Információcsere a CGI-n keresztül

A CGI-n keresztül végrehajtott bináris program különféle adatokhoz férhet hozzá a bejövő HTTP kéréssel kapcsolatban. Ide tartozik az URL, a fejlécek, a lekérdezési karakterlánc és a HTTP módszer, valamint a távoli kliens IP címe.

A kiszolgálószoftver nem szükséges minden szó szerinti megadásához. A CGI specifikáció engedélyezi a szervereket a fejlécek kizárása a környezeti változók közül. Ez lehet az érzékeny információk kihagyása – például az Authorization fejléc – vagy a redundancia elkerülése érdekében, amikor ugyanaz az információ egy dedikált változó segítségével érhető el.

A kéréssel kapcsolatos adatok mellett a CGI-kompatibilis szervereknek különféle részleteket is meg kell adniuk magukról. Ez magában foglalja a gazdagép-kiszolgáló szoftver nevét és verzióját. A szkriptek ezeket a részleteket saját belátásuk szerint felhasználhatják.

Az információkat a szerverről környezeti változókként továbbítják a CGI programnak. A program ugyanúgy éri el őket, mint bármely más környezeti változó. A szerver futtatja a programot gyermekfolyamatként, beállítva a környezeti változókat, mielőtt meghívná a futtatható fájlt.

Van egy adat, amelyet nem adunk át környezeti változóként. A megkereső szerv különleges bánásmódban részesül, mivel ez rendkívül hosszú lehet. Ez bekerül a szkriptbe a szokásos bemeneti folyamán. A szkriptek tájékoztatják, hogy mennyi adat áll rendelkezésre a CONTENT_LENGTH környezeti változó.

Miután a szkript feldolgozása befejeződött, a CGI szkript HTTP-választ ad vissza a kiszolgálónak. Ennek teljes HTTP válasznak kell lennie, amely fejléceket és választható törzset tartalmaz. A szkript a normál kimeneti adatfolyamra ad választ. A szerver ezt követően a HTTP-kapcsolaton keresztül visszaküldi a választ az ügyfélnek.

Hol van ma a CGI?

A CGI segített a modern web létrehozásában. Rendkívül egyszerű módon nyújtott dinamikus szerveroldali szkripteket a 90-es évek közepének technológiáival. A weboldal már nem volt statikus HTML fájl.

A CGI egyszerűsége elősegítette az azóta eltelt évtizedekben a kitartást. A CGI-szkriptek továbbra is használatban vannak, különösen a régebbi nyelveken alapuló régi alkalmazásokban. A technika azonban nem állt meg; A CGI-t korszerűbb alternatívák váltották fel, amelyek jobban megfelelnek a mai internetnek.

A hagyományos CGI általános költségeket jelent, amelyek nagyságrendileg problematikussá válnak. A CGI szkript minden kérésre újratöltődik, és új folyamatot eredményez, amely kimerítheti a nagy forgalmú webhelyek erőforrásait.

A CGI-k korlátozottak a parancsfájlok számára biztosított vezérlés szempontjából is. A szkriptek csak a válasz tartalma visszaküldték az ügyfélnek. Nem tudják befolyásolni a HTTP-csere egyéb részeit, például a hitelesítést vagy a munkamenet-kezelést.

Végül vannak biztonsági aggályok. A CGI szkripteket általában a kiszolgáló gyermekfolyamataként hajtják végre. Ez azt jelenti, hogy a szervert védeni kell a szkriptek interferenciájától. A téves konfiguráció a parancsfájlnak nemkívánatos hozzáférést adhat a szerver által kezelt más erőforrásokhoz, például a konfigurációs és a naplófájlokhoz.

A CGI számos kérdésével az újabb interfész technológiák foglalkoztak. FastCGI azért hozták létre, hogy csökkentse a CGI általános problémáját. A CGI-hez hasonlóan működik, de nem hoz létre új folyamatot minden egyes kéréshez. Ehelyett a FastCGI szerver a webkiszolgálótól függetlenül működik, fenntartva a CGI parancsfájlok tárolására használt állandó folyamatok saját készletét.

Másutt az egyes programozási nyelvek saját szerver interfészeket valósítottak meg. Ezek közvetlenül integrálódnak a webszerverekbe, általában opcionális modulokon keresztül. Ilyen például az Apache mod_php és mod_perl, amelyek natív támogatást kínálnak ezekhez a programozási nyelvekhez CGI használata nélkül (annak ellenére, hogy mindkettő használható a CGI-n keresztül).

E mechanizmusok megjelenése ellenére a CGI továbbra is releváns. A tervezés középpontjában az egyszerűség jelentette a legtöbb későbbi erőfeszítést az általános architektúra fejlesztésére. Bár nem valószínű, hogy a modern webes rendszerekben találkozik a CGI-vel nap mint nap, a főbb webszerverek továbbra is támogatják, és valószínűleg nem fog hamarosan megváltozni.


Source link


3 Views 0 Ratings Rate it

  • Minden jog fenntartva 2019-2020. Hogyankészítsek.Hu Impresszum Adatkezelési szabályok