tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

Internet: hogyan működik. CGI technológia – Common Gateway Interface

CGI technológia – Common Gateway Interface

CGI – Common Gateway Interface egy szabvány egy külső alkalmazási program interfészéhez (kommunikációjához). információs szerver típus HTTP, webszerver. A WWW szerverekről lekért hiperszöveges dokumentumok általában statikus adatokat tartalmaznak. A CGI-vel nevezett CGI programokat hozhatunk létre átjárók , amely az olyan alkalmazásrendszerekkel együttműködve, mint például adatbázis-kezelő rendszer, táblázatkezelő, üzleti grafika stb., képes lesz dinamikus információkat megjeleníteni a felhasználó képernyőjén.

Az átjáró programot a WWW szerver valós időben indítja el. A WWW szerver gondoskodik arról, hogy a felhasználó kérése az átjáróhoz kerüljön, az átjáró pedig az alkalmazásrendszer eszközeivel visszaküldi a kérés feldolgozásának eredményét a felhasználó képernyőjére. Az átjáró program C/C++, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script nyelven kódolható. Futtatható modulként a WWW szerver cgi-bin nevű alkönyvtárába íródik.

Adatátvitel átjárókhoz

Az információkérési adatok kiszolgálóról az átjáróra való átviteléhez a szerver a parancssort és a környezeti változókat használja. Ezek a környezeti változók akkor kerülnek beállításra, amikor a kiszolgáló végrehajtja az átjáró programot.

Lekérdezések különböző módszerekhez

Az információ a következő formában kerül továbbításra az átjárókhoz:

name=value&name1=value1&..,

Ahol név - név változó (az operátortól FORMA például), és az érték a valódi értéke. A kéréshez használt metódustól függően ez a karakterlánc vagy az URL részeként jelenik meg (a metódus esetén KAP), vagy tartalomként HTTP kérés (módszer POST). Ez utóbbi esetben ez az információ szabványos bemeneten kerül elküldésre az átjárónak.

A CONTENT_LENGTH bájt elküldésre kerül a szabványos bemeneti fájlleírónak. A szerver a CONTENT_TYPE (az átvitt adatok típusát) is elküldi az átjárónak. A kiszolgálónak nem kell fájlvégi karaktert küldenie, miután elküldte a CONTENT_LENGTH bájtnyi adatot, és miután az átjáró beolvassa azokat.

Példa

Vegyük példának egy űrlap POST metódussal történő futtatásának eredményét (METHOD="POST"). Kapjunk 7 bájtot, valahogy így kódolva:
a=b&b=c.

Ebben az esetben a szerver a CONTENT_LENGTH értéket 7-re, a CONTENT_TYPE értéket pedig application/x-www-form-urlencoded értékre állítja. Az átjáró szabványos bemenetének első karaktere "a" lesz, amit a kódolt karakterlánc többi része követ.

Parancssori argumentumok

Átjáró ide parancssor fogadja a szervertől:

  • az URL fennmaradó része az átjáró neve után első paraméterként (az első paraméter üres lesz, ha csak az átjáró neve volt jelen), és
  • kulcsszavak listája a keresési szkript parancssorának maradékaként, vagy
  • váltakozó űrlapmezőnevek hozzáadott egyenlőségjellel (páros pozíciókban) és megfelelő változóértékekkel (páratlan pozíciókban).

A kulcsszavak, űrlapmezőnevek és értékek dekódolva (a HTTP URL kódolási formátumból) és újrakódolva kerülnek elküldésre a Bourne shell kódolási szabályai szerint, így a parancssori átjáró úgy kapja meg az információkat, ahogy vannak, anélkül, hogy szükség lenne rá. további konverziókat hajt végre.

FORM utasítás lekérdezések

A FORM utasítások feldolgozása úgy történik, hogy minden mezőnév paraméter egyenlőségjellel végződik, a maradék pedig a paraméter értéke. Ha van valami a szkript (átjáró) neve után, akkor ez az információ kerül átadásra első paraméterként. Ellenkező esetben az első paraméter üres lesz.

Példák:

A /htbin/foo/x/y/z?name1=érték1&name2=érték2 neve: /.../foo /x/y/z name1= value1 name2= value2 és a /htbin/foo?name1=value1&name2=value2 : /.../foo "" név1= érték1 név2= érték2

CGI környezeti változók

A következő környezeti változók nem kéréstípus-specifikusak, és minden kérelemhez be vannak állítva.

SERVER_SOFTWARE A kérésre válaszoló (és az átjárót futtató) információszerver neve és verziója. Formátum: név/verzió SERVER_NAME A szerver neve, amelyen a szerver fut, DNS név, vagy az URL-ben szereplő IP-cím.

GATEWAY_INTERFACE A CGI specifikáció verziója a kiszolgáló lefordítása idején. Formátum: CGI/verzió KAP, A következő környezeti változók különböző kérésekre vonatkoznak, és az átjáró hívása előtt kitöltésre kerülnek: SERVER_PROTOCOL Annak az információs protokollnak a neve és verziója, amelyben a kérés érkezett. Formátum: protokoll/verzió SERVER_PORT Portszám, amelyre a kérést küldték REQUEST_METHOD A kéréshez használt metódus. HTTP esetén ez, POST stb. PATH_INFO Az ügyfél által biztosított további elérési út-információk. Más szavakkal, az átjáró egy virtuális útvonalon keresztül érhető el, amelyet néhány követ további információk

. Ezt az információt továbbítottuk a PATH_INFO részére.

HTTP_ACCEPT A kliens által feldolgozható MIME-típusok listája a HTTP-fejlécekben meghatározottak szerint. Más protokolloknak ezeket az információkat más helyekről kell beszerezniük (ha szükségük van rá). A listában szereplő minden típust vesszővel kell elválasztani a HTTP-specifikációnak megfelelően. Formátum: típus/altípus, típus/altípus HTTP_USER_AGENT Megjelenítő, amelyet az ügyfél a kéréshez használ. Általános formátum: program/verziótár/verzió.

Információk kiadása az átjárón keresztül

Alapfogalmak

Az átjáró szabványos kimenetre adja ki a kimenetét. Ez a kimenet lehet egy, az átjáró által generált dokumentum, vagy egy utasítás a kiszolgálónak, hogy honnan szerezheti be a szükséges dokumentumot.

Általában az átjáró állítja elő a kimenetét, amelyet értelmez, és visszaküld a kliensnek. Ennek a megközelítésnek az az előnye, hogy az átjárónak nem kell minden kérésnél elküldenie a teljes HTTP/1.0 fejlécet.

Kimeneti fejléc

Egyes átjárók esetében el kell kerülni, hogy a szerver feldolgozza a kimenetüket, és közvetlenül kommunikáljon az ügyféllel. Az ilyen átjárók másoktól való megkülönböztetéséhez a CGI megköveteli, hogy nevük nph- előtaggal kezdődjön. Ebben az esetben az átjáró felelős azért, hogy szintaktikailag helyes választ adjon vissza az ügyfélnek.

Elemelt fejlécek

Az átjáró kimenete egy kis fejléccel kezdődik. Tartalmaz szöveges karakterláncok, ugyanolyan formátumban, mint a HTTP fejléc, és üres sorral végződik (csak soremelést vagy CR/LF karaktert tartalmaz).

Minden olyan fejlécsor, amely nem kiszolgálói direktíva, közvetlenül az ügyfélnek kerül elküldésre. Jelenleg a CGI specifikáció három szerver direktívát határoz meg: Content-type A visszaküldendő dokumentum MIME típusa.

Hely Ez a mező akkor használatos, ha jelezni kell a szerver felé, hogy nem magát a dokumentumot küldi vissza, hanem egy hivatkozást.

  • Ha az argumentum egy URL, a szerver utasítja az ügyfelet a kérés átirányítására. Ha az argumentum egy virtuális elérési út, akkor a szerver visszaküldi az ezen elérési út által megadott dokumentumot a kliensnek, mintha az ügyfél közvetlenül kérte volna.

Állapot

Ez a direktíva arra szolgál, hogy a HTTP/1.0 kiszolgálót egy állapotkarakterláncra állítsa, amely elküldésre kerül az ügyfélnek. Formátum: nnn xxxxx, ahol az nnn egy 3 számjegyű állapotkód, az xxxxx pedig egy ok-karakterlánc, például "Tiltott".

Példák

Kimenet eleje - Tartalomtípus: text/html - kimenet vége - Most vegyük figyelembe az átjárót, amelynek bizonyos esetekben a /path/doc.txt dokumentumot kell kiadnia ennek a szervernek, mintha az ügyfél közvetlenül kérte volna a http://server:port/path/doc.txt fájlon keresztül. Ebben az esetben az átjáró kimenete a következő lenne: - a kimenet kezdete - Hely: /útvonal/doc.txt - kimenet vége - Végül tegyük fel, hogy az átjáró hivatkozásokat ad vissza a gopher szerverre, például a gopher:/ /gopher.ncsa.uiuc.edu/ . Az átjáró kimenete a következő lesz: - a kimenet kezdete - Hely: gopher://gopher.ncsa.uiuc.edu/ - a kimenet vége - Nem elemzett fejlécek

Tegyük fel, hogy van egy átjárónk, amely közvetlenül kommunikál az ügyféllel. Mint megjegyeztük, a nevének az nph- előtaggal kell kezdődnie, és érvényes HTTP-fejlécet kell visszaadnia. Ebben az esetben, ha az átjáróhoz HTTP/1.0-val egyenlő SERVER_PROTOCOL értékkel fértek hozzá, a kimenetének meg kell felelnie a HTTP/1.0 szabványnak:

Kimenet eleje - HTTP/1.0 200 OK Szerver: NCSA/1.0a6 Tartalomtípus: szöveg/sima - kimenet vége -


1) Általános információk a CGI-ről
1993 óta a CGI széles körben használt technológia a háromszintű kliens/szerver alkalmazások létrehozására az interneten. A CGI-alkalmazás a webszerverrel együtt alkalmazásszerverként működik egy háromszintű kliens/szerver architektúrában. A CGI egy olyan szabályrendszer (specifikáció), amely szerint a webszerveren elindított felhasználói programok HTML dokumentum formájában adatokat küldhetnek vissza a kliensnek. A CGI egy konzolalkalmazás, amely az ügyfél adatok lekérésére vagy frissítésére vonatkozó kérésére töltődik be, különálló, egyszálú folyamatként fut a webszerver irányítása alatt, és a befejezés után azonnal kiürül. A WinCGI a CGI Windows implementációja.

2) Megvalósítási lehetőségek
A webszerver által a CGI specifikációnak megfelelően futtatott programot CGI-szkriptnek nevezzük. Bármilyen programozási nyelven (C, Basic, Pascal stb.) vagy parancsnyelven (shell, perl stb.) írható, amely lehetővé teszi futtatható modulok létrehozását. A CGI-parancsfájl közvetítőként működik a webszerver és más szerverek, például adatbázis-kiszolgáló között, ezért gyakran átjárónak nevezik. Alapértelmezés szerint a CGI programok a C:\InetPub\Scripts|Cgi-bin könyvtárban találhatók, de létrehozhat saját virtuális könyvtárat.

3) A CGI és a WEB szerver közötti interakció módszerei
A CGI-specifikáció többféle interakciót biztosít a CGI program és a webszerver között, a szerver és a program közötti adatcsere típusától függően.
. Paraméterek átadása a parancssorban (például a szakaszban elhelyezett ISINDEX leíró használatával HTML dokumentum vagy FORM-URLENCODED).
. Környezeti változók értékeinek átadása (több mint 17 van).
. Adatátvitel szabványos bemeneti adatfolyamon (STDIN, STDOUT).

Az ISINDEX típusú kérés a következő formátumú kérés: http://site.ru/somthig-cgi/cgi-script?word1+word2+word3
Itt a legfontosabb a „?” szimbólum utáni szavak listája. A szavak a „+” jellel vannak felsorolva, és a cirill ábécé esetében nincsenek hexadecimális szekvenciákba kódolva. A szósor a "?" a QUERY_STRING környezeti változóba kerül.

A FORM-URLENCODED típusú kérés a következő formátumú kérés: http://site.ru/something-cgi/cgi-script?field=word1&field2=word2
Az űrlapadatok mező_név-érték párokként vannak írva, „&” karakterrel elválasztva.

Környezeti változók, amelyek nem függenek a kérés típusától:
SZERVER_SZOFTVER– megjeleníti a http szerver nevét és verzióját a következő formátumban: név/verzió.
SERVER_NAME– mutatja be domain név szerver.
SZERVER_ADDR– mutatja a szerver IP-jét.
SERVER_ADMIN– a webszerver rendszergazdájának e-mailje.
GATEWAY_INTERFACE– CGI verzió a httpd démon fordításának időpontjában a következő formátumban: CGI/verzió
DATE_GMT– aktuális dátum és idő a GMT időzónában.
DATE_LOCAL– aktuális dátum és idő a szerver időzónájában.
DOCUMENT_ROOT– elérési út a webszerver főkönyvtárához.
A kérés típusától függő környezeti változók:
SERVER_PROTOCOL– a jegyzőkönyv, amellyel a kérelem beérkezett.
SERVER_PORT– a kikötő, amelyen a kérés érkezett.
REQUEST_METHOD– kérés típusa: POST, GET és így tovább.
REQUEST_URL– a kérést küldő oldal.
SCRIPT_NAME– A szkript URL-je kiszolgálónév nélkül.
SCRIPT_FILENAME – a lemezen lévő szkriptfájl teljes neve.
QUERY_STRING– a szkripthívás parancssorában található információ (után? az URL-ben).
CONTENT_TYPE– A szkriptnek átadott MIME típusú adatok.
CONTONE_LENGTH– a továbbított adatok hossza.

Normál kimeneti adatfolyam:

Adatok bevitele a szkriptbe a szabványos bemeneti adatfolyamon keresztül csak akkor történik, ha az erőforráshoz (script) való hozzáférés POST módszerét használja. Ebben az esetben a CONTENT_LENGTH környezeti változó a szkript szabványos bemeneti adatfolyamából kiolvasandó karakterek számára van beállítva, a CONTENT_TYPE környezeti változó pedig a szabványos bemeneti adatfolyamból kiolvasott adatok kódolási típusára van állítva. Amikor karakterenként olvassa C nyelven, használhatja például a következő kódrészletet:

int n;
char *buf;
n=atoi(getenv(*CONTENT_LENGTH*));
buf=(char *)malloc(n+1);
memset(buf, '\000',n+1);
for (i=0; iBR> (buf[i]=getchar())

free(buf);

4) Adatátviteli módszerek
a) A GET metódus a környezeti változókon keresztül továbbítja az adatokat a CGI programnak, amelyek valójában a ? elválasztó karakteren keresztül kerülnek az URL-hez.

Mindenekelőtt a query_string változót használjuk erre a célra - egy hosszú karakterlánc, amely név = érték párokból áll, amelyeket egymástól a & jel választ el. Gyorsan kiderül, de az átvitt adatok mennyisége a webszerver típusától függően nem haladja meg a 256×1024 bájtot.

b) A POST metódus a szabványos stdin bemeneti adatfolyamon (Ini fájl WinCGI-hez) keresztül továbbítja az adatokat. Az adatok valójában a HTML-kérés törzséhez fűződnek. Az átvitt bájtok számát a content_length környezeti változó határozza meg. Ez lassabb módja az adatátvitelnek, de az átvitt adatok mennyisége nincs korlátozva.

c) Az A címke HREF paramétere
A GET és POST tag metódusok mellett

, a linkcímke HREF paraméterén keresztül hívhat meg egy CGI programot . A paramétereket a fájlnév után a ? jel követi.

Az adatok átvitele hasonló a GET metódus használatához.

5) Sorozatdiagram


1. művelet: A felhasználó megtekint egy HTML-dokumentumot, és egy űrlapot tartalmazó oldalra mutató hivatkozást talál (a címke használatával ), például adatbázis-lekérdezéshez. A felhasználó az űrlap beviteli mezőibe beírja a szükséges adatokat, és rákattint a KÜLDÉS gombra vagy a KÉP grafikus gombra. HTML tag két kötelező attribútuma van: METHOD és ACTION. Az ACTION attribútum egy URL-t ad meg, amelynek egy CGI program nevének kell lennie, amely általában egy könyvtárban található. A METHOD attribútum, amely általában GET vagy POST értéket vesz fel, meghatározza az adatok kiszolgálóra való átvitelének mechanizmusát.

2. törvény: A webböngésző összegyűjti az űrlapon megadott adatokat, meghatározza az adatátvitel módját a megadott módszertől függően (GET vagy POST), és hívást küld a webszervernek.

3. törvény: A webszerver socket kapcsolaton keresztül fogad hívást. A szerver részekre bontja az üzenetet, és megállapítja, hogy az egy POST vagy GET metódus. Ezután elindul a CGI interakció.

4. törvény: A webszerver beállítja a környezeti változókat (MS-DOS-ban a Set paranccsal állítjuk be). A környezeti változók hirdetőtáblaként működnek a webszerver és egy CGI-program közötti kommunikációhoz. Általában a következő változókat használják: kiszolgáló_neve, kérelem_módszere, elérési úti_információja, szkriptnév, tartalomtípus, tartalom_hosszúsága és még sok más. Amikor egy CGI-programot űrlapon keresztül hívnak meg (a leggyakoribb lehetőség), a böngésző egy hosszú karakterláncot küld a szervernek, amely a CGI program teljes elérési útjával kezdődik. Ezt követik más adatok, az úgynevezett útvonaladatok, és a path_info környezeti változón keresztül továbbítják a CGI programnak: http://myserver/cgi-bin/mycgi.exe/showrecord?recNo=20 ahol: showrecord? – elérési út adatok, recNo=20 – lekérdezési karakterlánc.

5. cselekvés: A webszerver egy CGI programot futtat, amely alapértelmezés szerint a C:\InetPub\scripts|cgi-bin könyvtárban található. Azonban létrehozhat saját virtuális könyvtárakat.

6. cselekvés: A CGI program elemzi a környezeti változókat, és meghatározza, hogy mi válaszol a POST-ra. C-ben a környezeti változók a getenv() függvény segítségével érhetők el.

7. cselekvés: A CGI program szabványos bemeneten (stdin) keresztül fogadja az üzenet törzsét. A content_length környezeti változó megmutatja, hogy mennyi adat van az üzenetben. C nyelven a fread vagy a scanf függvényeket használhatjuk adatfolyamból való adatok olvasásához.

8. cselekvés: A CGI program végrehajt bizonyos műveleteket, például lekérdez egy adatbázist.

9. cselekvés: A CGI program, függetlenül a GET vagy POST metódustól, mindig a szabványos kimeneti adatfolyamon (stdout) keresztül adja vissza az eredményt. A C nyelv a printf vagy az fwrite függvényeket használja.

10. művelet: A webszerver visszaküldi az eredményt a webböngészőnek.

6) Hozzáférés a funkciókhoz
. Az adatbázis elérhető a CGI-ből az ODBC programozói felületen vagy az OLE DB vagy ADO objektum interfésszel. A Delphi BDE-t használ.
. A hozzáférés biztonságát SSL (Secure Sockets Layer), S-HTTP (Secure HTTP) protokollok és tűzfalak biztosítják.
. A CGI programok interaktívabbá tétele érdekében egyes webszerverek mágikus sütiket vagy egyszerűen cookie-kat használhatnak, amelyek a kliensen tárolt szerveroldali adatokat képviselik.
. Egyes kiszolgálók képesek elemezni a böngészőnek küldött HTML-dokumentumot, és parancsokat adhatnak a megjegyzések beszúrásához: az aktuális dátumot, időt, a dokumentum legutóbbi módosítására vonatkozó információkat és számos mást. Ezt SSI-nek hívják – kiszolgálóoldali beépítés.

7) A CGI előnyei

Nyelvi függetlenség, amely abban áll, hogy bármilyen programozási nyelven vagy parancsnyelven CGI-programokat írhatunk. Így a Perl parancsnyelv többplatformos CGI-t (PCGI) biztosít.
. Processzorfüggetlenség, ami azt jelenti, hogy egy CGI program indításakor a webszervertől különálló folyamat jön létre, amely hiba esetén nem tudja „megtörni” a webszervert.
. A szabvány nyitottsága.
. Építészeti függetlenség a szerver implementációtól, pl. bármely szerveren használható.
. A használat átláthatósága.

8) A CGI hátrányai

Nagy időköltségek, mivel minden ügyfélkérelemhez külön egyszálú folyamatot kell elindítani, amely akkor ér véget, amikor az befejeződik. Ez alacsony teljesítményhez vezet. A FastCGI-hez van fejlesztés, de nem túl széles körben támogatott.
. Az adatbázis „karbantartása” nehézkes, hiszen minden kérésre külön folyamat indul, pl. új kapcsolat szükséges.
. A CGI működési képessége korlátozott, mert a specifikáció csak egy egyszerű programválasz szerepkört biztosít a felhasználói kérés eredményének generálásakor.
. A CGI kényelmetlen, mert szigorúan weblapokhoz van kötve.

9) CGI létrehozása Delphiben
. Delphi megközelítés a CGI létrehozásához
A Delphi CGI és WinCGI alkalmazásai a TCGIApplication osztályba tartoznak. A varázsló által a CGI és WinCGI alkalmazásokhoz generált kód szinte megegyezik, és csak a fordítói direktíva során tér el: ($APPTYPE CONSOLE|GUI). CGI-alkalmazás létrehozásához futtassa a következő parancsokat a Delphi 5-7 főmenüjében: Fájl\Új.

A megnyíló Delphi objektumtár többoldalas Új elemek ablakában válassza ki az Üzleti oldalt, és aktiválja a DB Web Application Wizard ikont. Ezután válaszoljon a kérdésekre.

A Delphi CGI-moduljának blokkvázlata


. Áttekintés a CGI Delphiben való megvalósításának elveiről
A WebDispatcher a WebRequest objektum segítségével elemzi a bejövő kéréseket, és kiválasztja a kívánt Action objektumot, amely továbbítja a kérést az adatbázis-kiszolgálónak. A megfelelő Producer egy HTML-kódtartalom generátora, amelyet a WebResponse objektumon keresztül továbbít a webszerverhez, majd a klienshez. Az űrlap címkéi a Producer objektumokban érhetők el<# …..>, lehetővé téve a Pascal-kód és a HTML-kód interakcióját. Webböngészőben ezeknek a címkéknek nincs jelentésük, de segítenek beilleszteni az adatbázisból származó adatokat a HTML oldalakba.

. Példa CGI programra

Program MyCGI;
($APPTYPE CONSOLE) // ($APPTYPE GUI) – WinCGI-hez
Webbrokert, HTTPApp-ot, CGIApp-ot, Unit1-et használ az „Unit1.Pas”-ban (WebVodule1: TWebModule)
($R*.RES)
Kezdődik
Alkalmazás.Inicializálás;
Application.CreateForm(TWebModule1: WebModule1);
Alkalmazás.Futtatás;
Vége.

Valószínűleg találkozott már olyan oldalakkal, amelyek korábban nem léteztek, és amelyeket dinamikusan az Ön kérésére hoztak létre – ahogy mondani szokás, „menet közben”.

Például minden ismertetőkönyv egy speciális űrlapot biztosít, amelyen hozzáadhatja véleményét, majd amikor legközelebb megnyitja az oldalt, új üzenetet fog tartalmazni.

Az egyik technológia, amely lehetővé teszi dinamikus tartalom hozzáadását a weboldalakhoz, a CGI. Lehetővé teszi, hogy egy adott URL-hez ne csak egy statikus dokumentumot, hanem egy programot is társítson, aminek eredményeként valós időben generálódnak az adatok.

Nézzünk egy példát az időjárási információk megadására. Az időjárás-jelentés minden nap változik, és naponta új statikus előrejelzési oldal jöhet létre. Ha azonban azonnali adatokat szeretne megadni, minden alkalommal új oldalt kell létrehoznia. Ezt CGI technológiával kell megvalósítani. A szerverrel való kapcsolatfelvétel pillanatában elindul rajta egy CGI program, amely hozzáfér a digitális mérőeszközhöz és információt ad a hőmérsékletről, nyomásról stb. Amikor legközelebb kapcsolatba lép ezen a címen, új információkat fog kapni.

Egy másik példa: amikor kitölt egy kérést, például egy kérést egy keresőben, válaszul egy CGI program eredményeit kapja meg keresett címek halmaza formájában.

A CGI program egy webszerver részének tekinthető, amelyet a webszerver valós időben hajt végre. A szerver továbbítja a felhasználó kéréseit egy CGI programnak, amely feldolgozza azokat, és munkája eredményét visszaküldi a felhasználó képernyőjére (3. ábra). A legtöbb webszerveren a CGI-mechanizmus a következőképpen épül fel: létrejön egy speciális alkönyvtár, amelyben az ilyen programok tárolódnak, és a webszerver rendszergazdája úgy konfigurálja a hozzáférést, hogy a fájlokat ne olvassák be, hanem elindítsák. végrehajtás. A program eredménye a kérésre válaszul elküldésre kerül a böngészőnek. A kliens szempontjából teljesen mindegy, hogy egy adott URL statikus dokumentum vagy CGI program. A böngésző ugyanúgy érzékeli az információkat, függetlenül attól, hogy azok menet közben jönnek létre, vagy egy statikus oldal. A CGI-program kimenete ugyanolyan formátumú, mint egy statikus dokumentumé.

Valószínűleg a világhálón való utazás közben találkozott a böngészőjében a CGI rövidítéssel, és valószínűleg találkozott egy hivatkozással a /cgi-bin/ címre - arra a könyvtárra, amelyben a CGI programok általában találhatók. Számos interaktív szolgáltatás, például vendégkönyv, fórum stb., kifejezetten CGI-programokra épül.

A ʼʼCGIʼʼ kifejezés nem csak a programra, hanem a protokollra is vonatkozik. Ebben az értelemben a CGI egy szabványos módja annak, hogy a webszerver átadja a felhasználói kérelmet egy alkalmazási programnak, és visszakapja az adatokat a felhasználóhoz való továbbítás céljából. A kiszolgáló és az alkalmazás közötti adatküldésre szolgáló CGI-protokoll a HTTP-protokoll része.

Meg kell jegyezni, hogy ha az oldalát ingyenes tárhelyszervereken kívánja tárolni, akkor nagyon valószínű, hogy a CGI szkriptek nem támogatottak ezeken a szervereken.

A CGI alternatívája a Microsoft Active Server Page (ASP) technológiája, amely ugyanezen az elven épül fel: a weblapokban található szkript lefut a szerveren, mielőtt az oldalt elküldené a felhasználónak.

Vannak más technológiák is, amelyek ugyanezen az elven működnek.

ábrán látható. 3, A CGI program a szerver oldalon fut.

3. ábra.

Ugyanakkor lehetőség van dinamikus oldalak rendszerezésére is, ha a kliens oldalon dinamikus oldaltartalmat generáló programokat viszünk át a kliens számítógépre (4. ábra).

Rizs. 4

Ezt a technológiát a következőképpen valósítják meg: az aktív dokumentumokat webszervereken tárolják és a statikus oldalakhoz hasonlóan töltik le a helyi számítógépre, de miután az aktív dokumentumprogram a helyi számítógépen van, lefut, és bizonyos számításokat végez a felhasználó számítógépén. , helyi számítási erőforrásokra támaszkodva. És ezeknek a számításoknak az eredménye már megjelenik a képernyőn. Ennek megfelelően az adatok képernyőn való megjelenítésének sebessége nem függ a távoli szerverrel való kommunikáció sebességétől, mivel az aktív dokumentum kimenete csak a helyi számítógépre való letöltés után következik be.
Feltéve a ref.rf
Fontos megjegyezni, hogy különböző technológiák használhatók aktív dokumentumok létrehozására: JavaScriptben írt alkalmazások, Java kisalkalmazások és ActiveX vezérlők.

CGI technológia - koncepció és típusok. A "CGI technológia" kategória besorolása és jellemzői 2017, 2018.

  • - Vasbeton oszlopok, gerendák és födémek megerősítésének technológiája

    A szerkezetek megerősítésének alapelve, hogy a keresztmetszetet és a vasalási fokot növelő további elemeket is be kell vonni a munkába, a tervezési séma változtatásával is, kiegészítő támasztékok bevezetésével.


  • Vasbeton oszlopok megerősítése lehetséges... .

    - Rajztechnika mázas technikával


  • 20. Diana" és portréművek IRODALOM Tervezés RENESZÁNSZ ÉS BAROKK KULTÚRA 1. A reneszánsz kultúrájának társadalmi-gazdasági előfeltételei. 2. A reneszánsz kultúrájának természete. 3. A reneszánsz háztartástípusai.... .

    - A munka technológiája padló emelésekor


  • A talajszinten (vagy a pince feletti emeleten) csomag formájában, egymás után készülnek a födémek minden padlóhoz és tetőhöz. Ezután a kész fedőlapot a már elkészült tetővel felemeljük és az első oszlopsor tetején rögzítjük. Telepítés végrehajtása... .

    - Épületek és építmények eltemetett szerkezeteinek vízállóságának növelésére szolgáló technológia kristályosodási gát létrehozásával Alapfalak külső függőleges vízszigetelésének helyreállítása A függőleges vízszigetelés leggyakoribb károsodása az alapozás külső oldalán. A függőleges vízszigetelés megsemmisítése és magas szintű


  • a talajvíz telítettséghez vezet... .

    - Apró betonból és vasbeton elemekből készült padlók cseréjének technológiája


  • A födémcserék során igen elterjedt megoldás a padlóközi födém építése teherhordó előregyártott vasbeton gerendákból, különböző szelvényekből és különböző típusú bélésekből. Tervezési megoldásaik szerint a vasbeton gerendákat több... [tovább].

    - Jet technológia az alaptalajok megszilárdításához


  • Az alapok és alapozások teherbírásának növelésének leghatékonyabb módja a talaj-cement cölöpök és tömbök építése jet technológiával (Jet Grouting), amelyet a külföldi gyakorlatban is széles körben alkalmaznak. A módszert Japánban fejlesztették ki a 70-es évek végén és... .

    - Anyagok és technológia


  • A kartongravírozás a magasnyomású nyomtatás egyik fajtája. A nyomtatáshoz szükséges dombornyomat egyedi kartonelemekből álló rátéttel készül. A kartonpapír vastagságának legalább 2 mm-nek kell lennie.

    A karton különösen vastag ("legalább 0,5 mm") papírra utal, amelyet... -ból ragasztanak össze. Valószínűleg találkozott már olyan oldalakkal, amelyek korábban nem léteztek, és amelyeket dinamikusan az Ön kérésére hoztak létre – ahogy mondani szokás, „menet közben”., ahol hozzáadja véleményét, majd amikor legközelebb megnyitja az oldalt, új üzenetet fog tartalmazni.

    Az egyik technológia, amely lehetővé teszi dinamikus tartalom hozzáadását a weboldalakhoz, a CGI. Lehetővé teszi, hogy egy adott URL-hez ne csak statikus dokumentumot, hanem programot is társítsanak, aminek eredményeként valós időben generálhatók adatok.

    Nézzünk egy példát az időjárási információk megadására. Az időjárás-jelentés minden nap változik, és naponta új statikus előrejelzési oldal jöhet létre. Ha azonban azonnali adatokat szeretne szolgáltatni, akkor generálnia kell új oldal. Ez CGI technológiával valósítható meg. A szerverrel való kapcsolatfelvétel pillanatában elindul rajta egy CGI program, amely hozzáfér a digitális mérőeszközhöz és információt ad a hőmérsékletről, nyomásról stb. Amikor legközelebb kapcsolatba lép ezen a címen, új információkat fog kapni.

    Egy másik példa: amikor kitölt egy kérést, például egy kérést keresőmotor, akkor válaszul megkapja a CGI program eredményeit egy szükséges címkészlet formájában.

    A CGI program egy webszerver részének tekinthető, amelyet a webszerver valós időben hajt végre. A szerver továbbítja a felhasználó kéréseit egy CGI programnak, amely feldolgozza azokat, és munkája eredményét visszaküldi a felhasználó képernyőjére (3. ábra). A legtöbb webszerveren a CGI-mechanizmus a következőképpen épül fel: létrejön egy speciális alkönyvtár, amelyben az ilyen programok tárolódnak, és a webszerver rendszergazdája úgy konfigurálja a hozzáférést, hogy a fájlokat ne olvassák be, hanem elindítsák. végrehajtás. A program eredménye a kérésre válaszul elküldésre kerül a böngészőnek. A kliens szempontjából teljesen mindegy, hogy egy adott URL statikus dokumentum vagy CGI program. A böngésző ugyanúgy érzékeli az információkat, függetlenül attól, hogy azok menet közben jönnek létre, vagy egy statikus oldal. A CGI-program kimenete ugyanolyan formátumú, mint egy statikus dokumentumé.

    Valószínűleg találkozott a CGI rövidítéssel a böngészőjében utazás közben Világháló, és valószínűleg láttál egy hivatkozást a /cgi-bin/ címre - arra a könyvtárra, amelyben a cgi programok általában találhatók. Számos interaktív szolgáltatás, például vendégkönyv, fórum stb., kifejezetten CGI-programokra épül.


    A „CGI” kifejezés nem csak a programra, hanem a protokollra is vonatkozik. Ebben az értelemben a CGI egy szabványos módja annak, hogy a webszerver átadja a felhasználói kérést egy alkalmazási programnak, és visszakapja az adatokat, hogy továbbítsa azokat a felhasználónak. A kiszolgáló és az alkalmazás közötti adatküldésre szolgáló CGI-protokoll a HTTP-protokoll része.

    Meg kell jegyezni, hogy ha az oldalát szervereken kívánja tárolni ingyenes tárhely, akkor lehetséges, hogy a CGI-szkriptek nem támogatottak ezeken a szervereken.

    A CGI alternatívája a technológia Microsoft Az Active Server Page (ASP), amely ugyanazon az elven épül fel: a weblapokban található szkript lefut a szerveren, mielőtt az oldalt elküldené a felhasználónak.

    Vannak más technológiák is, amelyek ugyanezen az elven működnek.

    ábrán látható. 3, A CGI program a szerver oldalon fut.

    Szervezni is lehet azonban dinamikus oldalak olyan programok átvitelével a kliens számítógépre, amelyek dinamikus oldaltartalmat generálnak a kliens oldalon (4. ábra).

    Rizs. 4

    Ezt a technológiát a következőképpen valósítják meg: az aktív dokumentumokat a webszervereken tárolják, és letöltik ide helyi számítógép ugyanaz, mint a statikus oldalak, de miután az aktív dokumentumprogram a helyi számítógépen van, elindul és bizonyos számításokat hajt végre a felhasználó számítógépén, a helyi programra támaszkodva. számítási erőforrások. És ezeknek a számításoknak az eredménye már megjelenik a képernyőn. Ennek megfelelően az adatok képernyőn történő megjelenítésének sebessége nem függ a kommunikáció sebességétől távoli szerver, mivel az aktív dokumentum kimenete csak a helyi számítógépre való letöltés után jelenik meg. Különféle technológiák használhatók aktív dokumentumok létrehozására: JavaScriptben írt alkalmazások, Java kisalkalmazások és ActiveX-vezérlők.

    CGI – Common Gateway Interface egy szabvány egy külső alkalmazásprogram interfészére (kommunikációjára) információs szerverrel, például HTTP, webszerverrel.

    A WWW szerverekről lekért hiperszöveges dokumentumok általában statikus adatokat tartalmaznak. A CGI-vel nevezett CGI programokat hozhatunk létre átjárók, amely az olyan alkalmazásrendszerekkel együttműködve, mint például adatbázis-kezelő rendszer, táblázatkezelő, üzleti grafika stb., képes lesz dinamikus információkat megjeleníteni a felhasználó képernyőjén.

    Az átjáró programot a WWW szerver valós időben indítja el. A WWW szerver gondoskodik arról, hogy a felhasználó kérése az átjáróhoz kerüljön, az átjáró pedig az alkalmazásrendszer eszközeivel visszaküldi a kérés feldolgozásának eredményét a felhasználó képernyőjére. Az átjáró program C/C++, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script nyelven kódolható. Futtatható modulként a WWW szerver cgi-bin nevű alkönyvtárába íródik.

    Adatátvitel átjárókhoz

    Az információkérési adatok kiszolgálóról az átjáróra való átviteléhez a szerver a parancssort és a környezeti változókat használja. Ezek a környezeti változók akkor kerülnek beállításra, amikor a kiszolgáló végrehajtja az átjáró programot.

    Lekérdezések különböző módszerekhez

    Az információ a következő formában kerül továbbításra az átjárókhoz:

    név=érték&név1=érték1&..

    ahol a név a változó neve, az érték pedig a valódi értéke. A kéréshez használt metódustól függően ez a karakterlánc vagy az URL részeként (GET metódus esetén), vagy a HTTP kérés tartalmaként (POST metódus esetén) jelenik meg. Ez utóbbi esetben ez az információ szabványos bemeneten kerül elküldésre az átjárónak.

    A CONTENT_LENGTH bájt elküldésre kerül a szabványos bemeneti fájlleírónak. A szerver a CONTENT_TYPE (az átvitt adatok típusát) is elküldi az átjárónak. A kiszolgálónak nem kell fájlvégi karaktert küldenie, miután elküldte a CONTENT_LENGTH bájtnyi adatot, és miután az átjáró beolvassa azokat.

    Példa

    Vegyük példának egy űrlap POST metódussal történő futtatásának eredményét (METHOD="POST"). Kapjunk 7 bájtot, valahogy így kódolva:

    Ebben az esetben a szerver a CONTENT_LENGTH értéket 7-re, a CONTENT_TYPE értéket pedig application/x-www-form-urlencoded értékre állítja. Az átjáró szabványos bemenetének első karaktere "a" lesz, amit a kódolt karakterlánc többi része követ.

    Parancssori argumentumok

    A parancssori átjáró a következőket kapja a szervertől:

    Az URL fennmaradó része az átjáró neve után, mint első paraméter (az első paraméter üres lesz, ha csak az átjáró neve volt jelen), és
    - kulcsszavak listája a keresőszkript parancssorának maradékaként, vagy
    - űrlapmezők váltakozó nevei hozzáadott egyenlőségjellel (páros pozíciókban) és megfelelő változóértékekkel (páratlan pozíciókban).

    A kulcsszavak, űrlapmezőnevek és értékek dekódolva (a HTTP URL kódolási formátumból) és újrakódolva kerülnek elküldésre a Bourne shell kódolási szabályai szerint, így a parancssori átjáró úgy kapja meg az információkat, ahogy vannak, anélkül, hogy szükség lenne rá. további konverziókat hajt végre.



    Kapcsolódó kiadványok