CGI - Common Gateway Interface

CGI - Common Gateway Interface  Γδ σ≥±  ±≥αφΣα≡≥ε∞ Φφ≥σ≡⌠σΘ±α (±Γ τΦ) Γφσ°φσΘ ∩≡ΦΩδαΣφεΘ ∩≡επ≡α∞∞√ ± Φφ⌠ε≡∞α÷Φεφφ√∞ ±σ≡Γσ≡ε∞ ≥Φ∩α HTTP, Web ±σ≡Γσ≡.
╬ß√≈φε πΦ∩σ≡≥σΩ±≥εΓ√σ ΣεΩ≤∞σφ≥√, ΦτΓδσΩασ∞√σ Φτ WWW ±σ≡Γσ≡εΓ, ±εΣσ≡µα≥ ±≥α≥Φ≈σ±ΩΦσ Σαφφ√σ. ╤ ∩ε∞ε∙ⁿ■ CGI ∞εµφε ±ετΣαΓα≥ⁿ CGI-∩≡επ≡α∞∞√, φατ√Γασ∞√σ °δ■τα∞Φ, Ωε≥ε≡√σ Γε ΓταΦ∞εΣσΘ±≥ΓΦΦ ± ≥αΩΦ∞Φ ∩≡ΦΩδαΣφ√∞Φ ±Φ±≥σ∞α∞Φ, ΩαΩ ±Φ±≥σ∞α ≤∩≡αΓδσφΦ  ßατεΘ Σαφφ√⌡, ²δσΩ≥≡εφφα  ≥αßδΦ÷α, ΣσδεΓα  π≡α⌠ΦΩα Φ Σ≡., ±∞επ≤≥ Γ√Σα≥ⁿ φα ²Ω≡αφ ∩εδⁿτεΓα≥σδ  ΣΦφα∞Φ≈σ±Ω≤■ Φφ⌠ε≡∞α÷Φ■.
╧≡επ≡α∞∞α-°δ■τ τα∩≤±Ωασ≥±  WWW ±σ≡Γσ≡ε∞ Γ ≡σαδⁿφε∞ ∞α±°≥αßσ Γ≡σ∞σφΦ. WWW ±σ≡Γσ≡ εßσ±∩σ≈ΦΓασ≥ ∩σ≡σΣα≈≤ τα∩≡ε±α ∩εδⁿτεΓα≥σδ  °δ■τ≤, α εφα Γ ±Γε■ ε≈σ≡σΣⁿ, Φ±∩εδⁿτ≤  ±≡σΣ±≥Γα ∩≡ΦΩδαΣφεΘ ±Φ±≥σ∞√, ΓετΓ≡α∙ασ≥ ≡στ≤δⁿ≥α≥ εß≡αßε≥ΩΦ τα∩≡ε±α φα ²Ω≡αφ ∩εδⁿτεΓα≥σδ . ╧≡επ≡α∞∞α-°δ■τ ∞εµσ≥ ß√≥ⁿ ταΩεΣΦ≡εΓαφα φα  τ√Ωα⌡ C/C++, Fortran, Perl, TCL, Unix Schell, Visual Basic, Apple Script. ╩αΩ Γ√∩εδφΦ∞√Θ ∞εΣ≤δⁿ, εφα τα∩Φ±√Γασ≥±  Γ ∩εΣΣΦ≡σΩ≥ε≡ΦΘ ± Φ∞σφσ∞ cgi-bin WWW ±σ≡Γσ≡α.
╬≡ΦπΦφαδ ε∩Φ±αφΦ  CGI Φφ≥σ≡⌠σΘ±α - Φφ±≥≡≤∞σφ≥α ±Γ τΦ ∩≡επ≡α∞∞√-°δ■τ ± WWW ±σ≡Γσ≡ε∞ φα⌡εΣΦ≥±  Γ ≤τδσ wist.ifmo.ru .



╧σ≡σΣα≈α Σαφφ√⌡ °δ■τα∞

─δ  ∩σ≡σΣα≈Φ Σαφφ√⌡ εß Φφ⌠ε≡∞α÷Φεφφε∞ τα∩≡ε±σ ε≥ ±σ≡Γσ≡α Ω °δ■τ≤, ±σ≡Γσ≡ Φ±∩εδⁿτ≤σ≥ Ωε∞αφΣφ≤■ ±≥≡εΩ≤ Φ ∩σ≡σ∞σφφ√σ εΩ≡≤µσφΦ . ▌≥Φ ∩σ≡σ∞σφφ√σ εΩ≡≤µσφΦ  ≤±≥αφαΓδΦΓα■≥±  Γ ≥ε≥ ∞ε∞σφ≥, ΩεπΣα ±σ≡Γσ≡ Γ√∩εδφ σ≥ ∩≡επ≡α∞∞≤ °δ■τα.

╟α∩≡ε±√ Σδ  ≡ατδΦ≈φ√⌡ ∞σ≥εΣεΓ

╚φ⌠ε≡∞α÷Φ  °δ■τα∞ ∩σ≡σΣασ≥±  Γ ±δσΣ≤■∙σΘ ⌠ε≡∞σ:

Φ∞ =τφα≈σφΦσ&Φ∞ 1=τφα≈σφΦσ1&..,

πΣσ Φ∞ - Φ∞  ∩σ≡σ∞σφφεΘ (Φτ ε∩σ≡α≥ε≡α FORM, φα∩≡Φ∞σ≡), Φ τφα≈σφΦσ - σσ ≡σαδⁿφεσ τφα≈σφΦσ. ┬ ταΓΦ±Φ∞ε±≥Φ ε≥ ∞σ≥εΣα, Ωε≥ε≡√Θ Φ±∩εδⁿτ≤σ≥±  Σδ  τα∩≡ε±α, ²≥α ±≥≡εΩα ∩ε Γδ σ≥±  ΦδΦ ΩαΩ ≈α±≥ⁿ URL (Γ ±δ≤≈ασ ∞σ≥εΣα GET), ΦδΦ ΩαΩ ±εΣσ≡µΦ∞εσ HTTP τα∩≡ε±α (∞σ≥εΣ POST). ┬ ∩ε±δσΣφσ∞ ±δ≤≈ασ, ²≥α Φφ⌠ε≡∞α÷Φ  ß≤Σσ≥ ∩ε±δαφα °δ■τ≤ Γ ±≥αφΣα≡≥φ√Θ ∩ε≥εΩ ΓΓεΣα.

═α ⌠αΘδεΓ√Θ Σσ±Ω≡Φ∩≥ε≡ ±≥αφΣα≡≥φεπε ∩ε≥εΩα ΓΓεΣα ∩ε±√δασ≥±  CONTENT_LENGTH ßαΘ≥. ╥αΩ µσ ±σ≡Γσ≡ ∩σ≡σΣασ≥ °δ■τ≤ CONTENT_TYPE (≥Φ∩ ∩σ≡σΣαΓασ∞√⌡ Σαφφ√⌡). ╤σ≡Γσ≡ φσ εß ταφ ∩ε±√δα≥ⁿ ±Φ∞Γεδ Ωεφ÷α ⌠αΘδα ∩ε±δσ ε≥±√δΩΦ CONTENT_LENGTH ßαΘ≥ Σαφφ√⌡ Φ ∩ε±δσ ≥επε, ΩαΩ °δ■τ Φ⌡ ∩≡ε≈Φ≥ασ≥.

╧≡Φ∞σ≡

┬ετⁿ∞σ∞ ≡στ≤δⁿ≥α≥ ≡αßε≥√ ⌠ε≡∞√ ± ∞σ≥εΣε∞ POST (METHOD="POST") Γ Ωα≈σ±≥Γσ ∩≡Φ∞σ≡α. ╧≤±≥ⁿ ∩εδ≤≈σφε 7 ßαΘ≥, ταΩεΣΦ≡εΓαφφ√⌡ ∩≡Φ∞σ≡φε ≥αΩ:
a=b&b=c.

┬ ²≥ε∞ ±δ≤≈ασ, ±σ≡Γσ≡ ≤±≥αφεΓΦ≥ τφα≈σφΦσ CONTENT_LENGTH ≡αΓφ√∞ 7 Φ CONTENT_TYPE Γ application/x-www-form-urlencoded. ╧σ≡Γ√∞ ±Φ∞Γεδε∞ Γ ±≥αφΣα≡≥φε∞ ∩ε≥εΩσ ΓΓεΣα Σδ  °δ■τα ß≤Σσ≥ "a", τα Ωε≥ε≡√∞ ß≤Σσ≥ ±δσΣεΓα≥ⁿ ε±≥α≥εΩ ταΩεΣΦ≡εΓαφφεΘ ±≥≡εΩΦ.

└≡π≤∞σφ≥√ Ωε∞αφΣφεΘ ±≥≡εΩΦ

╪δ■τ Γ Ωε∞αφΣφεΘ ±≥≡εΩσ ε≥ ±σ≡Γσ≡α ∩εδ≤≈ασ≥:

╩δ■≈σΓ√σ ±δεΓα, Φ∞σφα ∩εδσΘ ⌠ε≡∞√ Φ τφα≈σφΦ  ∩σ≡σΣα■≥±  ≡α±ΩεΣΦ≡εΓαφφ√∞Φ (Φτ HTTP URL ⌠ε≡∞α≥α ΩεΣΦ≡εΓαφΦ ) Φ ∩σ≡σΩεΣΦ≡εΓαφφ√∞Φ Γ ±εε≥Γσ≥±≥ΓΦΦ ± ∩≡αΓΦδα∞Φ ΩεΣΦ≡εΓαφΦ  Bourne shell, ≥αΩ ≈≥ε °δ■τ Γ Ωε∞αφΣφεΘ ±≥≡εΩσ ∩εδ≤≈Φ≥ Φφ⌠ε≡∞α÷Φ■ Γ ≥ε∞ ΓΦΣσ, ΩαΩ εφα σ±≥ⁿ, ßστ φσεß⌡εΣΦ∞ε±≥Φ ε±≤∙σ±≥Γδ ≥ⁿ Σε∩εδφΦ≥σδⁿφ√σ ∩≡σεß≡ατεΓαφΦ .

╟α∩≡ε±√ ε∩σ≡α≥ε≡α FORM

╟α∩≡ε±√ ε∩σ≡α≥ε≡α FORM εß≡αßα≥√Γα■≥±  ≥αΩΦ∞ εß≡ατε∞, ≈≥ε ΩαµΣ√Θ ∩α≡α∞σ≥≡, ε≥Γσ≈α■∙ΦΘ τα Φ∞  ∩εδ , εΩαφ≈ΦΓασ≥±  τφαΩε∞ ≡αΓσφ±≥Γα, α ε±≥α≥εΩ ∩≡σΣ±≥αΓδ σ≥ ±εßεΘ τφα≈σφΦσ ²≥επε ∩α≡α∞σ≥≡α. ┼±δΦ ∩≡Φ±≤≥±≥Γ≤σ≥ ≈≥ε δΦßε ∩ε±δσ Φ∞σφΦ ±Ω≡Φ∩≥α (°δ■τα), ≥ε ²≥α Φφ⌠ε≡∞α÷Φ  ∩σ≡σΣασ≥±  Γ Ωα≈σ±≥Γσ ∩σ≡Γεπε ∩α≡α∞σ≥≡α. ╚φα≈σ ∩σ≡Γ√Θ ∩α≡α∞σ≥≡ ß≤Σσ≥ ∩≤±≥.

╧≡Φ∞σ≡√:

 /htbin/foo/x/y/z?name1=value1&name2=value2
Γ√τ√Γασ≥±  ΩαΩ:
 /.../foo /x/y/z name1= value1 name2= value2
α
 /htbin/foo?name1=value1&name2=value2
Γ√τ√Γασ≥±  ΩαΩ:
 /.../foo '' name1= value1 name2= value2

CGI ∩σ≡σ∞σφφ√σ εΩ≡≤µσφΦ 

╤δσΣ≤■∙Φσ ∩σ≡σ∞σφφ√σ εΩ≡≤µσφΦ  φσ  Γδ ■≥±  ±∩σ÷Φ⌠Φ≈φ√∞Φ ∩ε ≥Φ∩≤ τα∩≡ε±εΓ Φ ≤±≥αφαΓδΦΓα■≥±  Σδ  Γ±σ⌡ τα∩≡ε±εΓ.

SERVER_SOFTWARE
═ατΓαφΦσ Φ Γσ≡±Φ  Φφ⌠ε≡∞α÷Φεφφεπε ±σ≡Γσ≡α, Ωε≥ε≡√Θ ε≥Γσ≈ασ≥ φα τα∩≡ε± (Φ τα∩≤±Ωασ≥ °δ■τ). ╘ε≡∞α≥: Φ∞ /Γσ≡±Φ 
SERVER_NAME
╚∞  ⌡ε±≥α, φα Ωε≥ε≡ε∞ τα∩≤∙σφ ±σ≡Γσ≡, DNS Φ∞ , ΦδΦ IP αΣ≡σ± Γ ≥ε∞ ΓΦΣσ, Γ Ωε≥ε≡ε∞ εφ ∩≡σΣ±≥αΓδσφ Γ URL.
GATEWAY_INTERFACE
┬σ≡±Φ  CGI ±∩σ÷Φ⌠ΦΩα÷ΦΦ φα ≥ε≥ ∞ε∞σφ≥, ΩεπΣα Ωε∞∩ΦδΦ≡εΓαδ±  ±σ≡Γσ≡. ╘ε≡∞α≥: CGI/Γσ≡±Φ 

╤δσΣ≤■∙Φσ ∩σ≡σ∞σφφ√σ εΩ≡≤µσφΦ   Γδ ■≥±  ±∩σ÷Φ⌠Φ≈φ√∞Φ Σδ  ≡ατφ√⌡ τα∩≡ε±εΓ, Φ τα∩εδφ ■≥±  ∩σ≡σΣ Γ√τεΓε∞ °δ■τα:

SERVER_PROTOCOL
╚∞  Φ Γσ≡±Φ  Φφ⌠ε≡∞α÷Φεφφεπε ∩≡ε≥εΩεδα, Γ Ωε≥ε≡ε∞ ∩≡Φ°σδ τα∩≡ε±. ╘ε≡∞α≥: ∩≡ε≥εΩεδ/Γσ≡±Φ 
SERVER_PORT
═ε∞σ≡ ∩ε≡≥α, φα Ωε≥ε≡√Θ ß√δ ∩ε±δαφ τα∩≡ε±
REQUEST_METHOD
╠σ≥εΣ, Ωε≥ε≡√Θ ß√δ Φ±∩εδⁿτεΓαφ Σδ  τα∩≡ε±α. ─δ  HTTP, ²≥ε "GET", "HEAD", "POST", Φ ≥.Σ.
PATH_INFO
─ε∩εδφΦ≥σδⁿφα  Φφ⌠ε≡∞α÷Φ  ε ∩≤≥Φ, Ωε≥ε≡≤■ ∩σ≡σΣαδ ΩδΦσφ≥. ─≡≤πΦ∞Φ ±δεΓα∞Φ, Σε±≥≤∩ Ω °δ■τ≤ ∞εµσ≥ ß√≥ⁿ ε±≤∙σ±≥Γδσφ ∩ε ΓΦ≡≥≤αδⁿφε∞≤ ∩≤≥Φ, τα Ωε≥ε≡√∞ ±δσΣ≤σ≥ φσΩε≥ε≡α  Σε∩εδφΦ≥σδⁿφα  Φφ⌠ε≡∞α÷Φ . ▌≥α Φφ⌠ε≡∞α÷Φ  ∩σ≡σΣασ≥±  Γ PATH_INFO.
PATH_TRANSLATED
╤σ≡Γσ≡ ∩σ≡σΣασ≥ ∩≡σεß≡ατεΓαφφ≤■ Γσ≡±Φ■ PATH_INFO, Ωε≥ε≡α  ΓΩδ■≈ασ≥ Γ ±σß  ∩≤≥ⁿ, ∩≡σεß≡ατεΓαφφ√Θ Φτ ΓΦ≡≥≤αδⁿφεπε Γ ⌠ΦτΦ≈σ±ΩΦΘ.
SCRIPT_NAME
┬Φ≡≥≤αδⁿφ√Θ ∩≤≥ⁿ Ω °δ■τ≤, Ωε≥ε≡√Θ Σεδµσφ Γ√∩εδφ ≥ⁿ± , Φ±∩εδⁿτ≤σ∞√Θ Σδ  ∩εδ≤≈σφΦ  URL.
QUERY_STRING
╚φ⌠ε≡∞α÷Φ , ±δσΣ≤■∙α  τα ? Γ URL, Ω Ωε≥ε≡ε∞≤ ε≥φε±Φ≥±  Σαφφ√Θ °δ■τ. ▌≥ε Φφ⌠ε≡∞α÷Φ  ∩≡σΣ±≥αΓδ σ≥ ±εßεΘ ±≥≡εΩ≤ τα∩≡ε±α. ╬φα φσ Σεδµφα ß√≥ⁿ ΣσΩεΣΦ≡εΓαφα φΦΩεΦ∞ εß≡ατε∞. ┬φσ ταΓΦ±Φ∞ε±≥Φ ε≥ Ωε∞αφΣφεΘ ±≥≡εΩΦ ²≥α ∩σ≡σ∞σφφα  Γ±σπΣα Σεδµφα ß√≥ⁿ ≤±≥αφεΓδσφα ∩≡Φ φαδΦ≈ΦΦ ≥αΩεΘ Φφ⌠ε≡∞α÷ΦΦ, .
REMOTE_HOST
╚∞  ⌡ε±≥α, ∩≡εΦτΓεΣ ∙σπε τα∩≡ε±. ┼±δΦ ±σ≡Γσ≡ φσ Φ∞σσ≥ ≥αΩεΘ Φφ⌠ε≡∞α÷ΦΦ, εφ Σεδµσφ ≤±≥αφεΓΦ≥ⁿ REMOTE_ADDR, α ²≥ε ∩εδσ ε±≥αΓΦ≥ⁿ φσ ≤±≥αφεΓδσφφ√∞.
REMOTE_ADDR
IP αΣ≡σ± ⌡ε±≥α, ∩≡εΦτΓεΣ ∙σπε τα∩≡ε±.
AUTH_TYPE
┼±δΦ ±σ≡Γσ≡ ∩εΣΣσ≡µΦΓασ≥ ΦΣσφ≥Φ⌠ΦΩα÷Φ■ ∩εδⁿτεΓα≥σδ , Φ °δ■τ  Γδ σ≥±  τα∙Φ∙σφφ√∞ ε≥ ∩ε±≥ε≡εφφσπε Σε±≥≤∩α, ²≥ε≥ ±∩σ÷Φ⌠Φ≈φ√Θ Σδ  ∩≡ε≥εΩεδα ∞σ≥εΣ ΦΣσφ≥Φ⌠ΦΩα÷ΦΦ Φ±∩εδⁿτ≤σ≥±  Σδ  ∩≡εΓσ≡ΩΦ ∩εδⁿτεΓα≥σδ .
REMOTE_USER
╚±∩εδⁿτ≤σ≥±  Γ ±Φ≥≤α÷Φ ⌡, αφαδεπΦ≈φ√⌡ ∩≡σΣ√Σ≤∙σ∞≤ ±δ≤≈α■, Σδ  ⌡≡αφσφΦ  Φ∞σφΦ ∩εδⁿτεΓα≥σδ .
REMOTE_IDENT
┼±δΦ HTTP ±σ≡Γσ≡ ∩εΣΣσ≡µΦΓασ≥ ΦΣσφ≥Φ⌠ΦΩα÷Φ■ ∩εδⁿτεΓα≥σδ  ±επδα±φε RFC 931, ≥ε ²≥α ∩σ≡σ∞σφφα  ß≤Σσ≥ ±εΣσ≡µα≥ⁿ Φ∞  ∩εδⁿτεΓα≥σδ , ∩εδ≤≈σφφεσ ε≥ ±σ≡Γσ≡α.
CONTENT_TYPE
─δ  τα∩≡ε±εΓ, Ωε≥ε≡√σ ±εΣσ≡µα≥ Σε∩εδφΦ≥σδⁿφ≤■ ΣεßαΓε≈φ≤■ Φφ⌠ε≡∞α÷Φ■, ≥αΩΦσ ΩαΩ HTTP POST Φ PUT, τΣσ±ⁿ ±εΣσ≡µΦ≥±  ≥Φ∩ Σαφφ√⌡ ²≥εΘ Φφ⌠ε≡∞α÷ΦΦ.
CONTENT_LENGTH
─δΦφα Σαφφ√⌡, Ωε≥ε≡≤■ ∩σ≡σΣασ≥ ΩδΦσφ≥.

┬ Σε∩εδφσφΦσ Ω ²≥Φ∞, σ±δΦ τα∩≡ε± ±εΣσ≡µΦ≥ Σε∩εδφΦ≥σδⁿφ√σ ∩εδ  ταπεδεΓΩα τα∩≡ε±α, εφΦ ∩ε∞σ∙α■≥±  Γ ∩σ≡σ∞σφφ√σ εΩ≡≤µσφΦ  ± ∩≡σ⌠ΦΩ±ε∞ HTTP_, τα Ωε≥ε≡√∞ ±δσΣ≤σ≥ Φ∞  ταπεδεΓΩα. ╦■ß√σ ±Φ∞Γεδ√ '-' Γ ταπεδεΓΩσ ∞σφ ■≥±  φα ±Φ∞Γεδ√ ∩εΣ≈σ≡ΩΦΓαφΦ  '_'. ╤σ≡Γσ≡ ∞εµσ≥ Φ±Ωδ■≈Φ≥ⁿ δ■ß√σ ταπεδεΓΩΦ, Ωε≥ε≡√σ εφ ≤µσ εß≡αßε≥αδ, ≥αΩΦσ ΩαΩ Authorization, Content-type, Φ Content- length. ┼±δΦ φσεß⌡εΣΦ∞ε, ±σ≡Γσ≡ ∞εµσ≥ Φ±Ωδ■≈Φ≥ⁿ δ■ß√σ (ΦδΦ Γεεß∙σ Γ±σ) Σε∩εδφΦ≥σδⁿφ√σ ∩εδ  ταπεδεΓΩα Γ ±δ≤≈ασ, ΩεπΣα Φ⌡ ΓΩδ■≈σφΦσ ∞εµσ≥ ∩≡ΦΓσ±≥Φ Ω ∩≡σΓ√°σφΦ■ ∩≡σΣσδα ≡ατ∞σ≡α ∩σ≡σ∞σφφ√⌡ εΩ≡≤µσφΦ . ╧≡Φ∞σ≡ε∞ ≥αΩεΘ ∩σ≡σ∞σφφεΘ ∞εµσ≥ ±δ≤µΦ≥ⁿ ∩σ≡σ∞σφφα  HTTP_ACCEPT, Ωε≥ε≡α  ß√δα ε∩≡σΣσδσφα Γ ±∩σ÷Φ⌠ΦΩα÷ΦΦ CGI/1.0. ─≡≤πΦ∞ ∩≡Φ∞σ≡ε∞ ∞εµσ≥ ±δ≤µΦ≥ⁿ ταπεδεΓεΩ User-Agent.

HTTP_ACCEPT
╤∩Φ±εΩ MIME ≥Φ∩εΓ, Ωε≥ε≡√σ ΩδΦσφ≥ ∞εµσ≥ εß≡αßε≥α≥ⁿ, ΩαΩ ταΣαφε Γ HTTP ταπεδεΓΩα⌡. ─≡≤πΦσ ∩≡ε≥εΩεδ√ Σεδµφ√ ∩εδ≤≈Φ≥ⁿ ²≥≤ Φφ⌠ε≡∞α÷Φ■ Φτ Σ≡≤πΦ⌡ ∞σ±≥ (σ±δΦ εφα Φ∞ φσεß⌡εΣΦ∞α). ╩αµΣ√Θ ≥Φ∩ Γ ²≥ε∞ ±∩Φ±Ωσ Σεδµσφ ß√≥ⁿ ε≥Σσδσφ τα∩ ≥εΘ ±επδα±φε HTTP ±∩σ÷Φ⌠ΦΩα÷ΦΦ. ╘ε≡∞α≥: ≥Φ∩/∩εΣ≥Φ∩, ≥Φ∩/∩εΣ≥Φ∩
HTTP_USER_AGENT
╧≡ε±∞ε≥≡∙ΦΩ, Ωε≥ε≡√Θ Φ±∩εδⁿτ≤σ≥ ΩδΦσφ≥ Σδ  ∩ε±√δΩΦ τα∩≡ε±α. ╬ß∙ΦΘ ⌠ε≡∞α≥: ∩≡επ≡α∞∞α/Γσ≡±Φ  ßΦßδΦε≥σΩα/Γσ≡±Φ .

┬√ΓεΣ Φφ⌠ε≡∞α÷ΦΦ °δ■τε∞

╬±φεΓφ√σ Ωεφ÷σ∩÷ΦΦ

╪δ■τ ε±≤∙σ±≥Γδ σ≥ ±ΓεΘ Γ√ΓεΣ Γ ±≥αφΣα≡≥φ√Θ ∩ε≥εΩ Γ√ΓεΣα. ▌≥ε≥ Γ√ΓεΣ ∞εµσ≥ ∩≡σΣ±≥αΓδ ≥ⁿ ±εßεΘ ΦδΦ ΣεΩ≤∞σφ≥, ±πσφσ≡Φ≡εΓαφφ√Θ °δ■τε∞, ΦδΦ Φφ±≥≡≤Ω÷ΦΦ ±σ≡Γσ≡≤, πΣσ ∩εδ≤≈Φ≥ⁿ φσεß⌡εΣΦ∞√Θ ΣεΩ≤∞σφ≥.

╩αΩ ∩≡αΓΦδε, °δ■τ ∩≡εΦτΓεΣΦ≥ ±ΓεΘ Γ√ΓεΣ, Ωε≥ε≡√Θ Φφ≥σ≡∩≡σ≥Φ≡≤σ≥±  Φ ∩ε±√δασ≥±  εß≡α≥φε ΩδΦσφ≥≤. ╧≡σΦ∞≤∙σ±≥Γε ²≥επε ∩εΣ⌡εΣα ±ε±≥εΦ≥ Γ ≥ε∞, ≈≥ε °δ■τ φσ Σεδµσφ ∩ε±√δα≥ⁿ ∩εδφ√Θ HTTP/1.0 ταπεδεΓεΩ φα ΩαµΣ√Θ τα∩≡ε±.

╟απεδεΓεΩ Γ√⌡εΣφεπε ∩ε≥εΩα

─δ  φσΩε≥ε≡√⌡ °δ■τεΓ ∞εµσ≥ ß√≥ⁿ φσεß⌡εΣΦ∞ε Φτßσπα≥ⁿ εß≡αßε≥ΩΦ ±σ≡Γσ≡ε∞ Φ⌡ Γ√ΓεΣα, Φ εß∙α≥ⁿ±  ± ΩδΦσφ≥ε∞ φσ∩ε±≡σΣ±≥Γσφφε. ─δ  ≥επε, ≈≥εß√ ε≥δΦ≈Φ≥ⁿ ≥αΩΦσ °δ■τ√ ε≥ ε±≥αδⁿφ√⌡, CGI ≥≡σß≤σ≥, ≈≥εß√ Φ⌡ Φ∞σφα φα≈ΦφαδΦ±ⁿ ± ∩≡σ⌠ΦΩ±α nph-. ┬ ²≥ε∞ ±δ≤≈ασ, φα °δ■τσ δσµΦ≥ ε≥Γσ≥±≥Γσφφε±≥ⁿ τα ΓετΓ≡α∙σφΦσ ΩδΦσφ≥≤ ±Φφ≥αΩ±Φ≈σ±ΩΦ ∩≡αΓΦδⁿφεπε ε≥Γσ≥α.

╟απεδεΓΩΦ ± ±Φφ≥αΩ±Φ≈σ±ΩΦ∞ ≡ατßε≡ε∞

┬√ΓεΣ °δ■τα φα≈Φφασ≥±  ± ∞αδσφⁿΩεπε ταπεδεΓΩα. ╬φ ±εΣσ≡µΦ≥ ≥σΩ±≥εΓ√σ ±≥≡εΩΦ, Γ ≥ε∞ µσ ⌠ε≡∞α≥σ, ΩαΩ Φ Γ HTTP ταπεδεΓΩσ Φ ταΓσ≡°ασ≥±  ∩≤±≥εΘ ±≥≡εΩεΘ (±εΣσ≡µα∙σΘ ≥εδⁿΩε ±Φ∞Γεδ ∩σ≡σΓεΣα ±≥≡εΩΦ ΦδΦ CR/LF).

╦■ß√σ ±≥≡εΩΦ ταπεδεΓΩα, φσ  Γδ ■∙Φσ±  ΣΦ≡σΩ≥ΦΓα∞Φ ±σ≡Γσ≡α, ∩ε±√δα■≥±  φσ∩ε±≡σΣ±≥Γσφφε ΩδΦσφ≥≤. ┬ φα±≥ε ∙ΦΘ ∞ε∞σφ≥, CGI ±∩σ÷Φ⌠ΦΩα÷Φ  ε∩≡σΣσδ σ≥ ≥≡Φ ΣΦ≡σΩ≥ΦΓ√ ±σ≡Γσ≡α:

Content-type
MIME ≥Φ∩ ΓετΓ≡α∙ασ∞επε ΣεΩ≤∞σφ≥α.
Location
▌≥ε ∩εδσ Φ±∩εδⁿτ≤σ≥±  Γ ±δ≤≈ασ, ΩεπΣα φσεß⌡εΣΦ∞ε ≤Ωατα≥ⁿ ±σ≡Γσ≡≤, ≈≥ε ΓετΓ≡α∙ασ≥±  φσ ±α∞ ΣεΩ≤∞σφ≥, α ±±√δΩα φα φσπε.

┼±δΦ α≡π≤∞σφ≥ε∞  Γδ σ≥±  URL, ≥ε ±σ≡Γσ≡ ∩σ≡σΣα±≥ ΩδΦσφ≥≤ ≤ΩαταφΦσ φα ∩σ≡σφα∩≡αΓδσφΦσ τα∩≡ε±α. ┼±δΦ α≡π≤∞σφ≥ ∩≡σΣ±≥αΓδ σ≥ ±εßεΘ ΓΦ≡≥≤αδⁿφ√Θ ∩≤≥ⁿ, ±σ≡Γσ≡ Γσ≡φσ≥ ΩδΦσφ≥≤ ταΣαφφ√Θ ²≥Φ∞ ∩≤≥σ∞ ΣεΩ≤∞σφ≥, ΩαΩ σ±δΦ ß√ ΩδΦσφ≥ τα∩≡α°ΦΓαδ σπε φσ∩ε±≡σΣ±≥Γσφφε.

▌≥α ΣΦ≡σΩ≥ΦΓα Φ±∩εδⁿτ≤σ≥±  Σδ  ταΣαφΦ  ±σ≡Γσ≡≤ HTTP/1.0 ±≥≡εΩΦ-±≥α≥≤±, Ωε≥ε≡α  ß≤Σσ≥ ∩ε±δαφα ΩδΦσφ≥≤. ╘ε≡∞α≥: nnn xxxxx, πΣσ nnn - 3-⌡ ÷Φ⌠≡εΓεΘ ±≥α≥≤±-ΩεΣ, Φ xxxxx ±≥≡εΩα ∩≡Φ≈Φφ√, ≥αΩα , ΩαΩ "Forbidden" (╟α∩≡σ∙σφε).

╧≡Φ∞σ≡√

╧≡σΣ∩εδεµΦ∞, Φ∞σσ≥±  φσΩε≥ε≡√Θ ≥σΩ±≥εΓ√Θ ΩεφΓσ≡≥σ≡ Γ HTML. ╩επΣα εφ εΩαφ≈ΦΓασ≥ ±Γε■ ≡αßε≥≤, εφ Σεδµσφ ∩≡εΦτΓσ±≥Φ ±δσΣ≤■∙ΦΘ Γ√ΓεΣ Γ ±≥αφΣα≡≥φ√Θ Γ√⌡εΣφεΘ ∩ε≥εΩ:

--- φα≈αδε Γ√ΓεΣα ---
Content-type: text/html
--- Ωεφσ÷ Γ√ΓεΣα ---
╥σ∩σ≡ⁿ ≡α±±∞ε≥≡Φ∞ °δ■τ, Ωε≥ε≡√Θ, Γ φσΩε≥ε≡√⌡ ±δ≤≈α ⌡, Σεδµσφ Γ√Σα≥ⁿ ΣεΩ≤∞σφ≥ /path/doc.txt ± Σαφφεπε ±σ≡Γσ≡α, ΩαΩ σ±δΦ ß√ εφ ß√δ φσ∩ε±≡σΣ±≥Γσφφε Γε±≥≡σßεΓαφ ΩδΦσφ≥ε∞ ≈σ≡στ http://server:port/path/doc.txt. ┬ ²≥ε ±δ≤≈ασ Γ√ΓεΣ °δ■τα ß≤Σσ≥ ≥αΩεΓ:
--- φα≈αδε Γ√ΓεΣα ---
Location: /path/doc.txt
--- Ωεφσ÷ Γ√ΓεΣα ---
═αΩεφσ÷, ∩≡σΣ∩εδεµΦ∞, ≈≥ε °δ■τ ΓετΓ≡α∙ασ≥ ±±√δΩΦ φα gopher ±σ≡Γσ≡, φα∩≡Φ∞σ≡ φα gopher://gopher.ncsa.uiuc.edu/. ┬√ΓεΣ °δ■τα ß≤Σσ≥ ±δσΣ≤■∙ΦΘ:
--- φα≈αδε Γ√ΓεΣα ---
Location: gopher://gopher.ncsa.uiuc.edu/
--- Ωεφσ÷ Γ√ΓεΣα ---
Non-parsed headers

─ε∩≤±≥Φ∞ ≥σ∩σ≡ⁿ, ≈≥ε ≤ φα± Φ∞σσ≥±  °δ■τ, Ωε≥ε≡√Θ εß∙ασ≥±  ± ΩδΦσφ≥ε∞ φσ∩ε±≡σΣ±≥Γσφφε. ╩αΩ ≤µσ ε≥∞σ≈αδε±ⁿ, σπε Φ∞  Σεδµφε φα≈Φφα≥ⁿ±  ± ∩≡σ⌠ΦΩ±α nph- Φ εφ Σεδµσφ ΓετΓ≡α∙α≥ⁿ Σε∩≤±≥Φ∞√Θ HTTP ταπεδεΓεΩ. ┬ ²≥ε∞ ±δ≤≈ασ, σ±δΦ Σε±≥≤∩ Ω °δ■τ≤ ß√δ ε±≤∙σ±≥Γδσφ ±ε τφα≈σφΦσ∞ SERVER_PROTOCOL ≡αΓφ√∞ HTTP/1.0, σπε Γ√ΓεΣ Σεδµσφ ≤ΣεΓδσ≥Γε≡ ≥ⁿ HTTP/1.0:

--- φα≈αδε Γ√ΓεΣα ---
HTTP/1.0 200 OK
Server: NCSA/1.0a6
Content-type: text/plain
--- Ωεφσ÷ Γ√ΓεΣα ---

╧≡Φ∞σ≈αφΦσ! ╠α≥σ≡Φαδ ∩εΣπε≥εΓδσφ φα ε±φεΓσ ΣεΩ≤∞σφ≥α "CGI Specification at NCSA"

╩Φ≡Φδδ ╠αΩ±Φ∞εΓ