CGI skil milli vefþjóns og forrita

Upphaflega var HTML málið að mestu takmarkað við það að lýsa útliti vefsíðna. Síðar bættust við möguleikar til að nota forskriftarmál (t.d. JavaScript) til að skapa ákveðna virkni á vefsíðum og til að fella forrit inn í vefsíður (t.d. Java-applet), en í HTML eru engar skipanir sem beinlínis keyra forrit utan vefsíðunnar.

Notagildi vefsins væri þó lítið ef ekki væri hægt að keyra forrit sem liggja hjá vefþjónum og t.d. sækja með því upplýsingar í gagnagrunna. Til þess að gera það sendir notandi beiðni til vefþjóns um að keyra forritið, hugsanlega með ákveðnum inntaksgildum. Vefþjónninn ræsir þá forritið, kemur inntaksgildunum á framfæri og bíður eftir því að keyrslu forritsins ljúki. Að lokum skilar forritið til vefþjónsins vefsíðu sem er tilbúin til sendingar um internetið og vefþjónninn skilar henni aftur til notandans. Samskiptaflötur vefþjóns og forrits nefnist Common Gateway Interface, CGI.

Á vefþjóninum er að finna Perl-forritið env.pl. Það inniheldur skipanir sem senda okkur vefsíðu með lista yfir umhverfisbreytur vefþjónsins. Forritið notar engar inntaksbreytur. Það er hægt að keyra með því að setja HREF á URL þess:
  <A HREF="">Keyra env.pl</A>
Hér er það gert:

Til þess að senda inntaksbreytur til forrits sem vefþjónn keyrir eru tvær aðferðir, GET og POST. Sjálfgefin aðferð er GET sem sendir upplýsingar í einum url-kóðuðum streng gegnum standard input forritsins. Lengd strengsins er takmörkuð við 255 stafi, þannig að GET hentar best til að senda stutta leitarstrengi til vefþjóns. Til dæmis má senda strenginn "Góðan dag" til forritsins env.pl með þessum hætti:
  <A HREF="?Góðan+dag">Senda streng til env.pl</A>
Hér er það gert:

Leitið uppi línu með unhverfisbreytunni QUERY STRING. Þar er strenginn að finna.