1.
1.1 ๋ชฉ์
CGI(Common Gateway Interface) [22]๋ฅผ ์ฌ์ฉํ๋ฉด HTTP [1], [4] ์๋ฒ ๋ฐ CGI ์คํฌ๋ฆฝํธ๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์๋ตํ๋ ์ฑ
์์ ๊ณต์ ํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์์ฒญ์ URI(Uniform Resource Identifier) [11], ์์ฒญ ๋ฐฉ๋ฒ ๋ฐ ์ ์ก ํ๋กํ ์ฝ์ด ์ ๊ณตํ๋ ์์ฒญ์ ๋ํ ๋ค์ํ ๋ณด์กฐ ์ ๋ณด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
CGI๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ค๋ช
ํ๋ ๋ฉํ ๋ณ์๋ผ๊ณ ์๋ ค์ง ์ถ์ ๋งค๊ฐ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ํ๋ก๊ทธ๋๋จธ ์ธํฐํ์ด์ค์ ํจ๊ป ์ด๊ฒ์ ์คํฌ๋ฆฝํธ์ HTTP ์๋ฒ ์ฌ์ด์ ํ๋ซํผ ๋
๋ฆฝ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ง์ ํ๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ ์์ฒญ๊ณผ ๊ด๋ จ๋ ์ฐ๊ฒฐ, ๋ฐ์ดํฐ ์ ์ก, ์ ์ก ๋ฐ ๋คํธ์ํฌ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ๋ฉด CGI ์คํฌ๋ฆฝํธ๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฐ ๋ฌธ์ ์ฒ๋ฆฌ์ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
1.2 ์๊ตฌ ์ฌํญ
๊ตฌํ์ ๊ตฌํ๋๋ ํ๋กํ ์ฝ์ ๋ํ ํ๋ ์ด์์ 'ํ์' ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ์ง ๋ชปํ๋ฉด ์ค์๋์ง ์๋๋ค. ํน์ง์ ๋ํ ๋ชจ๋ 'ํ์' ์๊ฑด๊ณผ ๋ชจ๋ 'ํ์' ์๊ฑด์ ์ถฉ์กฑํ๋ ๊ตฌํ์ '๋ฌด์กฐ๊ฑด ์ค์'๋ผ๊ณ ํ๋ฉฐ, ๋ชจ๋ 'ํ์' ์๊ฑด์ ์ถฉ์กฑํ์ง๋ง ๊ทธ๊ฒ์ ํน์ง์ ๋ํ ๋ชจ๋ 'ํ์' ์๊ฑด์ ์ถฉ์กฑ์ํค์ง ๋ชปํ๋ ๊ฒ์ '์กฐ๊ฑด ์ค์'๋ผ๊ณ ํ๋ค.
1.3 ๋ช ์ธ์
CGI์ ๋ชจ๋ ๊ธฐ๋ฅ ๋ฐ ๊ธฐ๋ฅ์ด ์ ์ ์๋์ด ์๋ ๊ฒ์ ์๋๋๋ค.
๋ณธ ๋ช
์ธ์์ ์ฃผ์ ๋ถ๋ถ ๋ค์ ๋ฌธ๊ตฌ๋ ๋ค์์ ์ฌ์ฉ๋ฉ๋๋ค.
์ง์ ๋์ง ์์ ๊ธฐ๋ฅ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
system-defined
์ด ๊ธฐ๋ฅ์ ์์คํ
๋ง๋ค ๋ค๋ฅผ ์ ์์ง๋ง ๋์ผํ ์์คํ
์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ๊ตฌํ์์ ๋์ผํด์ผ ํฉ๋๋ค. ์์คํ
์ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ์ฒด์ ์ ํด๋์ค๋ฅผ ์๋ณํฉ๋๋ค. ์ผ๋ถ ์์คํ
์ ๋ณธ ๋ฌธ์์ ์น์
7์ ์ ์๋์ด ์์ต๋๋ค. ์๋ก์ด ์์คํ
์ ๋ณธ ๋ฌธ์์ ๊ฐ์ ์์ด ์๋ก์ด ์ฌ์์ผ๋ก ์ ์๋ ์ ์์ต๋๋ค.
implementation-defined
๊ธฐ๋ฅ์ ๋์์ ๊ตฌํ๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค. ํน์ ๊ตฌํ์ ํด๋น ๋์์ ๋ฌธ์ํํด์ผ ํฉ๋๋ค.
1.4 ์ ์ด
์ด ๊ท๊ฒฉ์ HTTP/1.1 ๊ท๊ฒฉ[4]์ ์ ์๋ ๋ง์ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง, ๋ค์ ์ฉ์ด๋ ํด๋น ๋ฌธ์์ ์ ์ ๋๋ ๊ณตํต์ ์๋ฏธ์ ์ผ์นํ์ง ์์ ์ ์๋ ์๋ฏธ๋ก ์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ค.
โ๋ฉํ๋ณ์โ
์๋ฒ์์ ์คํฌ๋ฆฝํธ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๋ช
๋ช
๋ ๋งค๊ฐ ๋ณ์์
๋๋ค. ๊ทธ๊ฒ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ตฌํ์ด์ง๋ง ๋ฐ๋์ ์ด์ ์ฒด์ ํ๊ฒฝ์ ๋ณ์์ผ ํ์๋ ์๋ค.
'์คํฌ๋ฆฝํธ'
์ด ์ธํฐํ์ด์ค์ ๋ฐ๋ผ ์๋ฒ์์ ํธ์ถ๋๋ ์ํํธ์จ์ด์
๋๋ค. ๋
๋ฆฝํ ํ๋ก๊ทธ๋จ์ผ ํ์๋ ์์ง๋ง ๋์ ์ผ๋ก ๋ก๋๋๊ฑฐ๋ ๊ณต์ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ผ ์๋ ์๊ณ ์๋ฒ์ ์๋ธ๋ฃจํด์ผ ์๋ ์๋ค. ์ด๊ฒ์ '์คํฌ๋ฆฝํธ'๋ผ๋ ์ฉ์ด๊ฐ ์์ฃผ ์ดํด๋๊ธฐ ๋๋ฌธ์ ์คํ ์ ํด์๋๋ ์ง์ ์ ์งํฉ์ผ ์ ์์ง๋ง, ๊ทธ๊ฒ์ ์๊ฑด์ด ์๋๋ฉฐ ์ด ๋ช
์ธ์์ ๋งฅ๋ฝ์์ ์ฉ์ด๋ ๋ ๋์ ์ ์๊ฐ ๋ช
์๋์ด ์๋ค.
'์๋ฒ'
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์
๋๋ค
2. ํ๊ธฐ๋ฒ ๋ฐ ์ผ๋ฐ ๋ฌธ๋ฒ
2.1 BNF
์ด ๋ฌธ์์ ๋ช
์ํ ๋ชจ๋ ๋ฉ์ปค๋์ฆ์ RFC 822์์ ์ฌ์ฉํ ๊ฒ๊ณผ ์ ์ฌํ ์ฐ๋ฌธ๊ณผ ์ฆ๊ฐ BNF์ผ๋ก ์ค๋ช
๋๋ค[13]. ๋ฌ๋ฆฌ ๋ช
์๋์ง ์๋ ํ, ์์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ์ด ์ฆ๊ฐ๋ BNF๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ ํฌํจํฉ๋๋ค.
์ด๋ฆ = ์ ์
๊ท์น์ ์ด๋ฆ๊ณผ ์ ์๋ ๋ฑํธ ๋ฌธ์('=')๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๊ณต๋ฐฑ์ ์ ์์ ์ฐ์์ ์ด ๋ค์ฌ์ฐ๊ธฐ๋๋ค๋ ์ ์์๋ง ์ค์ํฉ๋๋ค.
"literal"
์ด์ค ๋ฐ์ดํ(")๋ ๋ฆฌํฐ๋ด ํ
์คํธ๋ฅผ ๋๋ฌ์ธ์ง๋ง, ๋ฆฌํฐ๋ด ๋ฐ์ดํ('<' ๋ฐ '>')๋ ๋ฆฌํฐ๋ด ๋ฐ์ดํ(๋จ, ๋ฆฌํฐ๋ด ๋ฐ์ดํ๋ ์ ์ธ).
rule1 | rule2
๋์ฒด ๊ท์น์ ์ธ๋ก ๋ง๋('|')๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
(rule1 rule2 rule3)
๊ดํธ๋ก ๋ฌถ์ธ ์์๋ ๋จ์ผ ์์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
*rule
๋ณํ('*') ์์ ์ค๋ ๊ท์น์๋ 0๊ฐ ์ด์์ ํญ๋ชฉ์ด ์์ ์ ์์ต๋๋ค. ์ ์ฒด ํ์์ 'n*m rule'๋ก ์ต์ n๊ฐ ๋ฐ ์ต๋ m๊ฐ์ ๊ท์น ๋ฐ์์ ๋ํ๋
๋๋ค. n๊ณผ m์ ๊ฐ๊ฐ ๊ธฐ๋ณธ๊ฐ 0๊ณผ ๋ฌดํ๋์ ์ ํ์ ์์ ๊ฐ์
๋๋ค.
[rule]
๋๊ดํธ('[' ๋ฐ ']')๋ก ๋๋ฌ์ธ์ธ ์์๋ ์ ํ ์ฌํญ์ด๋ฉฐ '*1 ๊ท์น'๊ณผ ๋์ผํฉ๋๋ค.
N ๊ท์น
์ญ์ง์ ์์ ์ค๋ ๊ท์น์ ์ ํํ N๊ฐ์ ๊ท์น ๋ฐ์์ ๋ํ๋
๋๋ค. ์ด๊ฒ์ 'N*N ๊ท์น'๊ณผ ๊ฐ๋ค.
2.2 ๊ธฐ๋ณธ ๊ท์น
์ด ๊ท๊ฒฉ์ ๋ฌธ์์ ๊ด์ ์์ ์ ์๋ BNF์ ์ ์ฌํ ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ค. ํ๋กํ ์ฝ์ ์ํด ํ์ฉ๋๋ ๋ฐ์ดํธ๋ฅผ ์ ์ํ๋ ๋ง์ ์ฌ์๊ณผ๋ ๋ฌ๋ฆฌ, ์ฌ๊ธฐ์ ๋ฌธ๋ฒ์ ๊ฐ ๋ฆฌํฐ๋ด์ ๊ทธ๊ฒ์ด ๋ํ๋ด๋ ๋ฌธ์์ ๋์ํ๋ค. ์ด๋ฌํ ๋ฌธ์๊ฐ ์์คํ
๋ด์์ ๋นํธ ๋ฐ ๋ฐ์ดํธ ๋จ์๋ก ํํ๋๋ ๋ฐฉ๋ฒ์ ์์คํ
์ ์๋๊ฑฐ๋ ํน์ ์ปจํ
์คํธ์์ ์ง์ ๋ฉ๋๋ค. ๋จ ํ๋์ ์์ธ๋ ์๋์ ์ ์๋ ๊ท์น 'OCTET'์
๋๋ค.
๋ณธ ๋ช
์ธ์์์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ๋ฌธ ๋ถ์ ๊ตฌ์กฐ๋ฅผ ์ค๋ช
ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
์ค ๋ฐ๊ฟ(NL)์ single control char ๊ฐ ์๋๋ผ sequence of control char ์ผ ์ ์์ต๋๋ค. ์์คํ
์ ํ
์คํธ๋ฅผ <CTL์ ์ ์ธํ๊ณ LWSP๋ฅผ ํฌํจํ๋ ์์์ ๋ฌธ์ ์งํฉ๋ณด๋ค ๋ ํฐ ๋ฌธ์ ์งํฉ์ผ๋ก ์ ์ํ ์ ์๋ค.
2.3 URL ์ธ์ฝ๋ฉ
์ฌ๊ธฐ์ ์ฌ์ฉ๋๋ ์ผ๋ถ ๋ณ์์ ๊ตฌ์กฐ๋ 'URL ์ธ์ฝ๋ฉ'์ผ๋ก ์ค๋ช
๋๋ค. ์ด ์ธ์ฝ๋ฉ์ RFC 2396 [2]์ ์น์
2์ ์ค๋ช
๋์ด ์์ต๋๋ค. URL ์ธ์ฝ๋ฉ ๋ฌธ์์ด์์ ์ด์ค์ผ์ดํ ์ํ์ค๋ ๋ฐฑ๋ถ์จ ๋ฌธ์("%")์ ๋ ๊ฐ์ 16์ง์ ์๋ฆฌ(์ฌ๊ธฐ์ ๋ ๊ฐ์ 16์ง์ ์๋ฆฌ)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด์ค์ผ์ดํ ์ํ์ค๋ US-ASCII [9] ์ฝ๋ํ๋ ๋ฌธ์ ์งํฉ(์๋ ๊ฒฝ์ฐ) ๋ด์ ์ฝ๋๋ก ์ฅํ
์ด ์๋ ๊ทธ๋ํฝ ๋ฌธ์๋ฅผ ๋ํ๋
๋๋ค. ํ์ฌ URI ๊ตฌ๋ฌธ์๋ ASCII๊ฐ ์๋ ๋ฌธ์ ์งํฉ์ ์๋ณํ ์ ์๋ ์กฐํญ์ด ์์ต๋๋ค. ์ฝ๋๋ ์ด๋ฅผ ๋ํ๋ด๋ฏ๋ก CGI๋ ์ด ๋ฌธ์ ๋ฅผ ์์๋ฐฉํธ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
์ผ๋ถ ์์ ํ์ง ์์(์์ฝ๋) ๋ฌธ์๋ ์ธ์ฝ๋ฉ๋ ๋ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์์ ํ์ง ์์ ๋ฌธ์์ ์ ์๋ ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค. ๊ถ์ ์๋ ์ทจ๊ธ์ ๋ํด์๋ RFC 2732[7]์ ์ํด ์
๋ฐ์ดํธ๋ RFC 2396[2]์ ์น์
2๋ฅผ ์ฐธ์กฐํ๋ค. ์ด๋ฌํ ์์ฝ๋ ๋ฌธ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ด์ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(์: ํ๋ ๊ตฌ๋ถ ๊ธฐํธ). ๋ชจ๋ ๊ฒฝ์ฐ์, ๋ฌธ์์ด์ ๋จผ์ ์กด์ฌํ๋ ์์ฝ๋ ๋ฌธ์์ ๊ด๋ จํ์ฌ ์ฒ๋ฆฌ๋ ๋ค์, "%" ์ด์ค์ผ์ดํ ์ํ์ค๋ฅผ ๋ฌธ์ ๊ฐ์ผ๋ก ๋์ฒดํ์ฌ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๋ฅผ URL ๋์ฝ๋ฉํ ์ ์๋ค.
๋ฌธ์์ด์ ์ธ์ฝ๋ฉํ๊ธฐ ์ํด ์์ฝ๋ ๋ชจ๋ ๋ฌธ์ ๋ฐ ๊ธ์ง๋ ๋ฌธ์๊ฐ ํด๋น "%" ์ด์ค์ผ์ดํ ์ํ์ค๋ก ๋์ฒด๋ฉ๋๋ค. ์ด ๋ฌธ์์ด์ URI๋ฅผ ์กฐ๋ฆฝํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์๋ค. ์์ฝ๋ ๋ฌธ์๋ ์ปจํ
์คํธ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ํญ์ ๋ค์ ์งํฉ์์ ๊ทธ๋ฆฝ๋๋ค.
๋ง์ง๋ง ๋ ๋ฌธ์๋ RFC 2732 [7]์ ์ํด ์ถ๊ฐ๋์๋ค. ํน์ ์ปจํ
์คํธ์์ ์ด๋ฌํ ๋ฌธ์์ ํ์ ์งํฉ์ ์์ฝ๋ฉ๋๋ค. ์ด ์งํฉ์ ๋ค๋ฅธ ๋ฌธ์๋ ๋ฌธ์์ด์ด ํด๋น ์ปจํ
์คํธ์์ URL ์ธ์ฝ๋ฉ๋ ๋ ์ธ์ฝ๋ฉ๋์ง ์์์ผ ํฉ๋๋ค. URI ๊ตฌ๋ฌธ์ ์ค๋ช
ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ค๋ฅธ ๊ธฐ๋ณธ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
3. ์คํฌ๋ฆฝํธ ํธ์ถ
3.1 ์๋ฒ ์ฑ ์
์๋ฒ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฒ์ดํธ์จ์ด ์ญํ ์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ์์ ํ๊ณ , ์์ฒญ์ ์ฒ๋ฆฌํ CGI ์คํฌ๋ฆฝํธ๋ฅผ ์ ํํ๊ณ , ํด๋ผ์ด์ธํธ ์์ฒญ์ CGI ์์ฒญ์ผ๋ก ๋ณํํ๊ณ , ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ CGI ์๋ต์ ํด๋ผ์ด์ธํธ์ ๋ํ ์๋ต์ผ๋ก ๋ณํํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ํ๋กํ ์ฝ ๋๋ ์ ์ก ์์ค ์ธ์ฆ ๋ฐ ๋ณด์์ ๊ตฌํํ ์ฑ
์์ด ์์ต๋๋ค. ์๋ฒ๋ ๋ํ ๋ฏธ๋์ด ์ ํ ๋ณํ ๋๋ ํ๋กํ ์ฝ ๊ฐ์์ ๊ฐ์ ์ผ๋ถ ์ถ๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์์ฒญ ๋๋ ์๋ต์ ์์ ํ๋ 'non-transparent' ๋ฐฉ์์ผ๋ก ์๋ํ ์ ์์ต๋๋ค.
์๋ฒ๋ ์ด ์ฌ์์ ํ์ํ ํด๋ผ์ด์ธํธ ์์ฒญ ๋ฐ์ดํฐ์ ๋ํด ๋ณํ ๋ฐ ํ๋กํ ์ฝ ๋ณํ์ ์ํํด์ผ ํฉ๋๋ค.๋์ฑ์ด, ์๋ฒ๋ CGI ์คํฌ๋ฆฝํธ๊ฐ ์ด ๊ท๊ฒฉ์ ์ค์ํ์ง ๋ชปํ๋๋ผ๋ ๊ด๋ จ ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์ค์ํ๋๋ก ํด๋ผ์ด์ธํธ์ ๋ํ ์ฑ
์์ ์ ์งํ๋ค.
์๋ฒ๊ฐ ์์ฒญ์ ์ธ์ฆ์ ์ ์ฉํ๋ ๊ฒฝ์ฐ, ์์ฒญ์ด ์ ์๋ ๋ชจ๋ ์ ๊ทผ ์ ์ด๋ฅผ ํต๊ณผํ์ง ์๋ ํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํด์๋ ์ ๋ฉ๋๋ค.
3.2 ์คํฌ๋ฆฝํธ ์ ํ
์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ณตํ ์ ๋ค๋ฆญ ์์ URI๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํํ CGI๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ์ด URI์๋ "/"๋ก ๊ตฌ๋ถ๋ ๊ตฌ์ฑ ์์๊ฐ ์๋ ๊ณ์ธต ๊ฒฝ๋ก๊ฐ ํฌํจ๋ฉ๋๋ค. ํน์ ์์ฒญ์ ๊ฒฝ์ฐ, ์๋ฒ๋ ์ด ๊ฒฝ๋ก์ ์ ๋ถ ๋๋ ์ ํ ๋ถ๋ถ์ ๊ฐ๋ณ ์คํฌ๋ฆฝํธ๋ก ์๋ณํ์ฌ ๊ฒฝ๋ก ๊ณ์ธต์ ํน์ ์ง์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์นํฉ๋๋ค. ๊ฒฝ๋ก์ ๋๋จธ์ง(์๋ ๊ฒฝ์ฐ)๋ ์คํฌ๋ฆฝํธ์์ ํด์ํ ๋ฆฌ์์ค ๋๋ ํ์ ๋ฆฌ์์ค ์๋ณ์์
๋๋ค.
์ด ๊ฒฝ๋ก ๋ถํ ์ ๋ํ ์ ๋ณด๋ ์๋์ ์ค๋ช
๋ ๋ฉํ ๋ณ์์ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋น๊ณ์ธต์ URI ์ฒด๊ณ์ ๋ํ ์ง์์ ๋ณธ ๋ช
์ธ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ค.
3.3 ์คํฌ๋ฆฝํธ URI
ํด๋ผ์ด์ธํธ ์์ฒญ URI์์ ์คํฌ๋ฆฝํธ ์ ํ์ผ๋ก์ ๋งคํ์ ํน์ ์๋ฒ ๊ตฌํ ๋ฐ ๊ตฌ์ฑ์ ์ํด ์ ์๋ฉ๋๋ค. ์๋ฒ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ค๋ฅธ URI ๊ฒฝ๋ก ๊ณ์ธต ์งํฉ์ผ๋ก ์๋ณํ๋๋ก ํ์ฉํ๋ฏ๋ก ๋ฉํ ๋ณ์๋ฅผ ์ฒ๋ฆฌํ๊ณ ์์ฑํ๋ ๋์ ์ด ์งํฉ์ ๋ค๋ฅธ ๋ฉค๋ฒ์ ์ํด URI๋ฅผ ๋์ฒดํ ์ ์๋ค.
์๋ฒ๋
1. ํน์ ํด๋ผ์ด์ธํธ ์์ฒญ์ URI๋ฅผ ๋ณด์กดํ ์ ์์ต๋๋ค. ๋๋
2. ๊ฐ ์คํฌ๋ฆฝํธ์ ๋ํด ๊ฐ๋ฅํ ๊ฐ ์งํฉ์์ ํ์ค URI๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ๋๋
3. ์ธํธ์์ URI์ ๋ค๋ฅธ ์ ํ์ ๊ตฌํํ ์ ์๋ค.
์ด๋ ๊ฒ ์์ฑ๋ ๋ฉํ ๋ณ์๋ก๋ถํฐ URI, ์ฆ 'Script-URI'๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋์ ์ด URI์ ์ก์ธ์คํ๋ค๋ฉด ์คํฌ๋ฆฝํธ๊ฐ SCRIPT_NAME, PATH_INFO ๋ฐ QUERY_STRING ๋ฉํ ๋ณ์์ ๋ํด ๋์ผํ ๊ฐ์ผ๋ก ์คํ๋์์ ๊ฒ์ด๋ผ๋ ์์ฑ์ด ์์ด์ผ ํฉ๋๋ค. Script-URI๋ RFC 2396[2]์ ์น์
3์ ์ ์๋ ์ผ๋ฐ URI์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์คํฌ๋ฆฝํธ-URI์ ๋ค์ํ ๊ตฌ์ฑ ์์๋ ์ผ๋ถ ๋ฉํ ๋ณ์์ ์ํด ์ ์๋ฉ๋๋ค(์๋ ์ฐธ์กฐ).
์ฌ๊ธฐ์ sheme from SERVER_PROTOCOL, <server-name>, <server-port> ๋ฐ <query-string>์ ๊ฐ ๋ฉํ ๋ณ์์ ๊ฐ์
๋๋ค. ";", "=" ๋ฐ "?"๋ก URL ์ธ์ฝ๋ฉ๋ SCRIPT_NAME ๋ฐ PATH_INFO ๊ฐ์ ์์ฝ๋จ์ผ๋ก, <script-path> ๋ฐ <path-path>๋ฅผ ์ง์ ํฉ๋๋ค.
PATH_INFO ๋ฉํ ๋ณ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์น์
4.1.5๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
์คํค๋ง์ ํ๋กํ ์ฝ์ ์คํค๋ง๊ฐ ์ ํ๋ฆฌ์ผ์ด์
ํ๋กํ ์ฝ ์ธ์ ์ก์ธ์ค ๋ฐฉ๋ฒ์ ์๋ณํ๊ธฐ ๋๋ฌธ์ ๋์ผํ์ง ์๋ค. ์๋ฅผ ๋ค์ด, ์ ์ก ๊ณ์ธต ๋ณด์(TLS)์ ์ฌ์ฉํ์ฌ ์ก์ธ์ค๋ ๋ฆฌ์์ค[14]๋ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ ๋ https ์ฒด๊ณ๊ฐ ์๋ ์์ฒญ URI๋ฅผ ๊ฐ์ง๋๋ค [19]. CGI/1.1์ ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก ์ ์๋ ๋๋ก Script-URI์๋ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ํ๋กํ ์ฝ์ด ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์คํฌ๋ฆฝํธ๋ URI ์ฒด๊ณ๋ฅผ ๋ ์ ์ถ๋ก ํ๊ธฐ ์ํด ์ฒด๊ณ๋ณ ๋ฉํ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๋ํ ์ด ์ ์๋ ์ ์ ํ ๊ตฌ์ฑ ์์๋ฅผ ์์ ํ์ฌ path-info ๋๋ query-string์ ๋ํด ํ์ฉ๋ ๊ฐ์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ๋ URI๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
3.4 ์คํ
์คํฌ๋ฆฝํธ๋ ์์คํ
์ ์ ๋ฐฉ์์ผ๋ก ํธ์ถ๋ฉ๋๋ค. ๋ฌ๋ฆฌ ์ง์ ํ์ง ์์ผ๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํ์ผ์ด ์คํ ํ๋ก๊ทธ๋จ์ผ๋ก ํธ์ถ๋ฉ๋๋ค. ์๋ฒ๋ ์น์
4์ ์ค๋ช
๋ ๋๋ก CGI ์์ฒญ์ ์ค๋นํฉ๋๋ค. ์ด๊ฒ์ ์์ฒญ ๋ฉํ ๋ณ์(์คํ ์ ์คํฌ๋ฆฝํธ์ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅ)์ ์์ฒญ ๋ฉ์์ง ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ์์ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ ์ ์คํํ ์ ์์ต๋๋ค. ์น์
5 ๋ฐ 6์ ์ค๋ช
๋ ๋๋ก ์คํฌ๋ฆฝํธ์ ์๋ต์ด ์๋ฒ๋ก ๋ฐํ๋ฉ๋๋ค.
์ค๋ฅ ์กฐ๊ฑด์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์๋ฒ๋ ์ธ์ ๋ ์ง ๊ฒฝ๊ณ ์์ด ์คํฌ๋ฆฝํธ ์คํ์ ์ค๋จํ๊ฑฐ๋ ์ข
๋ฃํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ ์ก ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํธ๋ ๋น์ ์์ ์ธ ์ข
๋ฃ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค๋นํด์ผ ํฉ๋๋ค.
4. CGI request
์์ฒญ์ ๋ํ ์ ๋ณด๋ ์์ฒญ ๋ฉํ ๋ณ์์ ๊ด๋ จ๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ ๊ฐ์ง ์์ค๋ก๋ถํฐ ๋์ต๋๋ค.
4.1 Request ๋ฉํ ๋ณ์
๋ฉํ ๋ณ์๋ ์๋ฒ์์ ์คํฌ๋ฆฝํธ๋ก ์ ๋ฌ๋ ์์ฒญ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ฉฐ, ์์คํ
์ ์ ๋ฐฉ์์ผ๋ก ์คํฌ๋ฆฝํธ์ ์ํด ์ก์ธ์ค๋ฉ๋๋ค. ๋ฉํ ๋ณ์๋ ๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ด๋ฆ์ผ๋ก ์๋ณ๋ฉ๋๋ค. ๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ์ด๋ฆ์ ๊ฐ์ง ๋ ๊ฐ์ ๋ค๋ฅธ ๋ณ์๋ ์์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์๋ ๋๋ฌธ์ ๋ฐ ๋ฐ์ค("_")์ ์ ๊ท ํํ์ ์ฌ์ฉํ์ฌ ๋ณด์ฌ์ค๋ค. ํน์ ์์คํ
์ ๋ค๋ฅธ ํํ์ ์ ์ํ ์ ์๋ค.
๊ตฌ์ฑํ์ ์ด๋ฆ์ด ๊ฐ์ ๋ฉํ ๋ณ์, ํ๋กํ ์ฝ ๋๋ ๊ตฌ์ฑํ์ ์ด๋ฆ์ผ๋ก ์์ํ๋ ์ด๋ฆ(์: HTTP_ACCEPT)๋ ์ ์๋ฉ๋๋ค. ์ด๋ฌํ ๋ณ์์ ์์ ์๋ฏธ๋ ๋ณธ ๋ช
์ธ์์ ๋
๋ฆฝ์ ์ผ๋ก ๋ณ๊ฒฝ๋ ์ ์๋ค. (์น์
4.1.18๋ ์ฐธ์กฐ).
์๋ฒ๋ ์ถ๊ฐ ๊ตฌํ ์ ์ ํ์ฅ ๋ฉํ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ผ๋ฉฐ, ๋ฉํ ๋ณ์์ ์ด๋ฆ์ "X_"๋ก ์ ๋์ฌ๊ฐ ๋ถ์ด์ผ ํฉ๋๋ค.
์ด ๊ท๊ฒฉ์์๋ 0 ๊ธธ์ด(NULL) ๊ฐ๊ณผ ๊ฒฐ์ธก๊ฐ์ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์คํฌ๋ฆฝํธ๋ ๋ ์์ฒญ http://host/script์ http://host/script?๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ๋ ๊ฒฝ์ฐ ๋ชจ๋ QUERY_STRING ๋ฉํ ๋ณ์๊ฐ NULL์ด ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
meta-meta-value = " | 1*<๊ฐ์ TEXT, CHAR ๋๋ ํ ํฐ>
์ ํ์ ๋ฉํ ๋ณ์๋ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ ์๋ต(์ค์ ๋์ง ์์ ์ํ๋ก)๋ ์ ์์ต๋๋ค. ๋ฉํ ๋ณ์ ๊ฐ์ ๋ณ๋์ ์ธ๊ธ์ด ์๋ ํ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํด์ผ ํฉ๋๋ค. ๋ฉํ ๋ณ์์ ์๋ ๋ฌธ์์ ํํ์ ์์คํ
์ ์์ด๋ฉฐ, ์๋ฒ๋ ๊ฐ์ ํด๋น ํํ์ผ๋ก ๋ณํํด์ผ ํฉ๋๋ค.
4.1.1 AUTH_TYPE
AUTH_TYPE ๋ณ์๋ ์๋ฒ๊ฐ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฉ์ปค๋์ฆ์ ์๋ณํฉ๋๋ค. ํด๋ผ์ด์ธํธ ํ๋กํ ์ฝ ๋๋ ์๋ฒ ๊ตฌํ์ ์ํด ์ ์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ๊ฐ์ ํฌํจํฉ๋๋ค.
HTTP์ ๊ฒฝ์ฐ, ํด๋ผ์ด์ธํธ๊ฐ ์ธ๋ถ ์ก์ธ์ค๋ฅผ ์ํด ์ธ์ฆ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ์์ฒญ ๊ถํ ๋ถ์ฌ ํค๋ ํ๋์ 'auth-scheme' ํ ํฐ์์ ์ด ๋ณ์์ ๊ฐ์ ์ค์ ํด์ผ ํฉ๋๋ค.
HTTP ์ก์ธ์ค ์ธ์ฆ ์ฒด๊ณ๋ RFC 2617[5]์ ์ค๋ช
๋์ด ์์ต๋๋ค.
4.1.2 CONTENT_LENGTH
CONTENT_LENGTH ๋ณ์์๋ ์์ฒญ์ ์ฒจ๋ถ๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ํฌ๊ธฐ๊ฐ 10์ง์ ์ฅํ
์ผ๋ก ํฌํจ๋ฉ๋๋ค. ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด NULL(๋๋ unset)์ ํด๋ฆญํฉ๋๋ค.
์๋ฒ๋ ์์ฒญ์ด ๋ฉ์์ง ๋ณธ๋ฌธ ์ํฐํฐ์ ์๋ฐ๋๋ ๊ฒฝ์ฐ์๋ง ์ด ๋ฉํ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. CONTENT_LENGTH ๊ฐ์ ์๋ฒ๊ฐ transfer-codings or content-codings์ ์ ๊ฑฐํ ํ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๊ธธ์ด๋ฅผ ๋ฐ์ํด์ผ ํฉ๋๋ค.
4.1.3 CONTENT_TYPE
์์ฒญ์ ๋ฉ์์ง ๋ณธ๋ฌธ์ด ํฌํจ๋ ๊ฒฝ์ฐ CONTENT_TYPE ๋ณ์๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ์ธํฐ๋ท ๋ฏธ๋์ด ์ ํ[6]์ผ๋ก ์ค์ ๋ฉ๋๋ค.
์ ํ, ํ์ ์ ํ ๋ฐ ๋งค๊ฐ ๋ณ์ ํน์ฑ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. ๋งค๊ฐ ๋ณ์ ๊ฐ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ๋ฏธ๋์ด ์ ํ๊ณผ HTTP์์์ ๋ฏธ๋์ด ์ฌ์ฉ์ HTTP/1.1 ๊ท๊ฒฉ์ ์น์
3.7์ ์ค๋ช
๋์ด ์์ต๋๋ค [4].
์ด ๋ณ์์๋ ๊ธฐ๋ณธ๊ฐ์ด ์์ต๋๋ค. ์ค์ ํด์ ๋ ๊ฒฝ์ฐ์๋ง ์คํฌ๋ฆฝํธ๊ฐ ์์ ๋ ๋ฐ์ดํฐ์์ ๋ฏธ๋์ด ์ ํ์ ํ์ธํ ์ ์์ต๋๋ค. ์ ํ์ด ์๋ ค์ง์ง ์์ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ ์์ฉ ํ๋ก๊ทธ๋จ/์ฅํ
์คํธ๋ฆผ ์ ํ์ ๊ฐ์ ํ๊ฑฐ๋ ์ค๋ฅ์ ํจ๊ป ์์ฒญ์ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค(์น์
6.3.3 ์ฐธ์กฐ).
๊ฐ ๋ฏธ๋์ด ์ ํ์ ์ ํ์ ๋งค๊ฐ ๋ณ์ ๋ฐ ํ์ ๋งค๊ฐ ๋ณ์ ์งํฉ์ ์ ์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ํ ์ฝ๋ํ๋ ๋ฌธ์ ์งํฉ์ ์ ์ํ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๋ ๊ฐ์ ๊ฐ๋ ๋ฌธ์ ์งํฉ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ ์ ์๋ค. charset ๋งค๊ฐ ๋ณ์๊ฐ ์๋ต๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ฅ ๋จผ์ ์ ์ฉํ ๋ค์ ๊ท์น ์ค ํ๋์ ๋ฐ๋ผ ํ์ํด์ผ ํฉ๋๋ค.
1. ์ผ๋ถ ๋ฏธ๋์ด ์ ํ์๋ ์์คํ
์ ์ ๊ธฐ๋ณธ ๋ฌธ์ ์งํฉ์ด ์์ ์ ์์ต๋๋ค.
2. "ํ
์คํธ" ์ ํ์ ๋ฏธ๋์ด ์ ํ์ ๊ธฐ๋ณธ๊ฐ์ ISO-8859-1 [4]์
๋๋ค.
3. ๋ฏธ๋์ด ์ ํ ๊ท๊ฒฉ์ ์ ์๋ ๊ธฐ๋ณธ๊ฐ์
๋๋ค.
4. ๊ธฐ๋ณธ๊ฐ์ US-ASCII์
๋๋ค.
HTTP Content-Type ํ๋๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ ํค๋์ ์๋ ๊ฒฝ์ฐ ์๋ฒ๋ ์ด ๋ฉํ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ์๋ฒ๊ฐ ์ฒจ๋ถ๋ ์ํฐํฐ๊ฐ ์์ง๋ง ๋ด์ฉ ์ ํ ๋จธ๋ฆฌ๊ธ ํ๋๊ฐ ์๋ ์์ฒญ์ ์์ ํ๋ ๊ฒฝ์ฐ, ์ฌ๋ฐ๋ฅธ ๋ด์ฉ ์ ํ์ ํ์ธํ ์ ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ด ๋ฉํ ๋ณ์๋ฅผ ์๋ตํด์ผ ํฉ๋๋ค.
4.1.4 GATEWAY_INTERFACE
Gateway_Interface ๋ณ์๋ ์๋ฒ๊ฐ ์คํฌ๋ฆฝํธ์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ CGI์ ๋ฐฉ์ธ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
์ฃผ์์ ๋ถ์๋ ๋ณ๋์ ์ ์๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก ๊ฐ๊ฐ ํ ์๋ฆฌ ์๋ณด๋ค ๋ ๋๊ฒ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ CGI/2.4๋ CGI/2.13๋ณด๋ค ๋ฎ์ ๋ฒ์ ์ด๋ค. ์ ํ 0์ ์คํฌ๋ฆฝํธ์์ ๋ฌด์ํด์ผ ํ๋ฉฐ ์๋ฒ์์ ์์ฑํด์๋ ์ ๋ฉ๋๋ค.
์ด ๋ฌธ์๋ CGI ์ธํฐํ์ด์ค์ 1.1 ๋ฒ์ ์ ์ ์ํฉ๋๋ค.
4.1.5 PATH_INFO
PATH_INFO ๋ณ์๋ CGI ์คํฌ๋ฆฝํธ์์ ํด์ํ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. CGI ์คํฌ๋ฆฝํธ๊ฐ ๋ฐํํ ๋ฆฌ์์ค ๋๋ ํ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ณ ์คํฌ๋ฆฝํธ ์์ฒด๋ฅผ ์๋ณํ๋ ๋ถ๋ถ ๋ค์ ์ด์ด์ง๋ URI ๊ฒฝ๋ก ๊ณ์ธต์์ ํ์๋ฉ๋๋ค. URI ๊ฒฝ๋ก์ ๋ฌ๋ฆฌ PATH_INFO๋ URL ์ธ์ฝ๋ฉ์ด ์๋๋ฏ๋ก ๊ฒฝ๋ก ์ธ๊ทธ๋จผํธ ๋งค๊ฐ ๋ณ์๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. "/"์ PATH_INFO๋ ๋จ์ผ ๋ณด์ด๋ ๊ฒฝ๋ก ์ธ๊ทธ๋จผํธ๋ฅผ ๋ํ๋
๋๋ค.
์ด ๊ฐ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋๋ฉฐ ์๋ฒ๋ ์์ฒญ URI์ ํ์๋ ๊ฒฝ๋ก์ ๋์๋ฌธ์๋ฅผ ๋ณด์กดํด์ผ ํฉ๋๋ค. ์๋ฒ๋ PATH_INFO์ ๋ํด ํ์ฉํ๋ ๊ฐ์ ์ ํ ๋ฐ ์ ํ์ ๊ฐํ ์ ์์ผ๋ฉฐ, ๋ถ์ ํฉํ ๊ฐ์ด ๋ฐ๊ฒฌ๋๋ฉด ์ค๋ฅ์ ํจ๊ป ์์ฒญ์ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค. ์ธ์ฝ๋ฉ๋ "/"๊ฐ PATH_INFO๋ก ๋์ฝ๋ฉ๋๋ ๋ชจ๋ ์์ฒญ์ ํฌํจํ ์ ์๋๋ฐ, ์ด๋ ์คํฌ๋ฆฝํธ์ ๋ํ ์ ๋ณด ์์ค์ ๋ํ๋ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฒฝ๋ก์์ US-ASCII๊ฐ ์๋ ๋ฌธ์์ ๋ํ ์ฒ๋ฆฌ๋ ์์คํ
์ ์๋ฉ๋๋ค.
URL ์ธ์ฝ๋ฉ๋ PATH_INFO ๋ฌธ์์ด์ ํด๋น ๊ฒฝ๋ก์ SCRIPT_NAME ๋ถ๋ถ์ ๋ฐ๋ฅด๋ Script-URI์ ์ถ๊ฐ ๊ฒฝ๋ก ๊ตฌ์ฑ ์์(์น์
3.3 ์ฐธ์กฐ)๋ฅผ ํ์ฑํฉ๋๋ค.
4.1.6 PATH_TRANSLATED
4.1.7 QUERY_STRING
4.1.8 REMOTE_ADDR
4.1.9 REMOTE_HOST
4.1.10 REMOTE_IDENT
4.1.11 REMOTE_USER
4.1.12 REQUEST_METHOD
REQUEST_METHOD ๋ฉํ ๋ณ์๋ ์น์
4.3์์ ์ค๋ช
ํ ๋๋ก ์คํฌ๋ฆฝํธ๊ฐ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉํ ๋ฉ์๋๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
์ด ๋ฉ์๋๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. HTTP ๋ฐฉ๋ฒ์ HTTP/1.0 ๊ท๊ฒฉ[1]์ ์น์
5.1.1๊ณผ HTTP/1.1 ๊ท๊ฒฉ[4]์ ์น์
5.1.1์ ์ค๋ช
๋์ด ์์ต๋๋ค.
4.1.13 SCRIPT_NAME
4.1.14 SERVER_NAME
4.1.15 SERVER_PORT
4.1.16 SERVER_PROTOCOL
SERVER_PROTOCOL ๋ณ์๋ ์ด CGI ์์ฒญ์ ์ฌ์ฉ ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ ํ๋กํ ์ฝ์ ์ด๋ฆ๊ณผ ๋ฒ์ ์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์์ ํต์ ์์ ์ฌ์ฉํ๋ ํ๋กํ ์ฝ ๋ฒ์ ๊ณผ ๋ค๋ฅผ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ 'protocol'์ ์๋ฒ์ ์คํฌ๋ฆฝํธ('protocol-specific' ๊ธฐ๋ฅ) ์ฌ์ด์ ์ ๋ฌ๋๋ ์ผ๋ถ ์ ๋ณด์ ๊ตฌ๋ฌธ์ ์ ์ํฉ๋๋ค. ๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋/์๋ฌธ์๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ํต์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ ์ฒด ์ก์ธ์ค ๋ฉ์ปค๋์ฆ์ ์ ์ํ๋ ์คํฌ๋ฆฝํธ URI์ ๊ตฌ์ฑํ ๋ถ๋ถ๊ณผ ๋์ผํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, "HTTP" ํ๋กํ ์ฝ๋ก ์คํฌ๋ฆฝํธ์ ๋๋ฌํ๋ ์์ฒญ์ "https" ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ์ ์ ์์ต๋๋ค.
์๋ฒ๊ฐ ์ฌ์ฉํ ์ ์๋ SERVER_Protocol์ ์ ์๋ ค์ง ๊ฐ์ "ํฌํจ๋จ"์ด๋ฉฐ, ์ด๋ ํ์ฌ ๋ฌธ์๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ง์ ์ ์ธ ๋์์ด ์๋ ๋ณตํฉ ๋ฌธ์์ ์ผ๋ถ๋ก ํฌํจ๋จ์ ๋ํ๋
๋๋ค. ์คํฌ๋ฆฝํธ๋ ์ด ์์ฒญ์ HTTP/1.0 ์์ฒญ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
4.1.17 SERVER_SOFTWARE
4.1.18 Protocol-Specific Meta-Variable
์๋ฒ๋ ์์ฒญ์ ๋ํ ํ๋กํ ์ฝ ๋ฐ ๊ตฌ์ฑํ์ ๊ด๋ จ๋ ๋ฉํ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. ํ๋กํ ์ฝ๋ณ ๋ณ์์ ํด์์ SERVER_PROTOCOL์ ํ๋กํ ์ฝ ๋ฒ์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ตฌ์ฑํ๊ฐ ํ๋กํ ์ฝ๊ณผ ๋์ผํ์ง ์์ ๊ฒฝ์ฐ, ์๋ฒ๋ ๊ตฌ์ฑํ ์ด๋ฆ์ ๊ฐ์ง ๋ฉํ ๋ณ์๋ฅผ NULL์ด ์๋ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณ์์ ์กด์ฌ๋ ์์ฒญ์ ์ํด ์ฌ์ฉ๋๋ ์ฒด๊ณ๋ฅผ ์คํฌ๋ฆฝํธ์ ๋ํ๋
๋๋ค.
์ด๋ฆ์ด "HTTP_"๋ก ์์ํ๋ ๋ฉํ ๋ณ์์๋ ์ฌ์ฉ๋ ํ๋กํ ์ฝ์ด HTTP์ธ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์์ฒญ ํค๋ ํ๋์์ ์ฝ์ ๊ฐ์ด ํฌํจ๋ฉ๋๋ค. HTTP ํค๋ ํ๋ ์ด๋ฆ์ ๋๋ฌธ์๋ก ๋ณํ๋๊ณ "-"๊ฐ ๋ชจ๋ "_"๋ก ๋์ฒด๋๋ฉฐ ๋ฉํ ๋ณ์ ์ด๋ฆ์ ๋ถ์ฌํ๊ธฐ ์ํด "HTTP_"๊ฐ ์์ ์ถ๊ฐ๋ฉ๋๋ค. ํค๋ ๋ฐ์ดํฐ๋ ํด๋ผ์ด์ธํธ์ ์ํด ์ ์ก๋ ๋๋ก ์ ์๋๊ฑฐ๋ ์๋ฏธ๋ก ์ ๋ณ๊ฒฝํ์ง ์๋ ๋ฐฉ์์ผ๋ก ๋ค์ ์์ฑ๋ ์ ์์ต๋๋ค. ๋์ผํ ํ๋ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋ฌ ํค๋ ํ๋๊ฐ ์์ ๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋จ์ผ ๊ฐ์ผ๋ก ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฌ ์ค์ ๊ฑธ์ณ ์๋ ํค๋ ํ๋๋ ํ ์ค์ ๋ณํฉ๋์ด์ผ ํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์๋ฒ๋ CGI ๋ฉํ ๋ณ์์ ์ ํฉํ๋๋ก ๋ฐ์ดํฐ์ ํํ(์: ๋ฌธ์ ์งํฉ)์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์๋ฒ๊ฐ ์์ ํ๋ ๋ชจ๋ ํค๋ ํ๋์ ๋ํด ๋ฉํ ๋ณ์๋ฅผ ์์ฑํ ํ์๋ ์์ต๋๋ค. ํนํ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ํค๋ ํ๋(์: 'Authorization') ๋๋ 'Content-Length' ๋ฐ 'Content-Type'๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ณ์์ ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ํค๋ ํ๋๋ ๋ชจ๋ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ์๋ฒ๋ '์ฐ๊ฒฐ'๊ณผ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ธก ํต์ ๋ฌธ์ ์๋ง ๊ด๋ จ๋ ํค๋ ํ๋๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
4.2 Request Message-Body
์์ฒญ ๋ฐ์ดํฐ๋ ์์คํ
์ ์ ๋ฐฉ์์ผ๋ก ์คํฌ๋ฆฝํธ์ ์ก์ธ์ค๋ฉ๋๋ค. ๋ฌ๋ฆฌ ์ ์๋์ง ์์ ํ 'ํ์ค ์
๋ ฅ' ํ์ผ ์ค๋ช
์๋ ํ์ผ ํธ๋ค์ ์ฝ์ด์ผ ํฉ๋๋ค.
CONTENT_LENGTH๊ฐ NULL์ด ์๋ ๊ฒฝ์ฐ ์์ฒญ ๋ณธ๋ฌธ์ด ์์ฒญ๊ณผ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. ์๋ฒ๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ์ ์๋ ๋ฐ์ดํธ ์ ์ด์์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ์๋ฒ๋ CONTENT_LENGTH ๋ฐ์ดํธ๋ฅผ ์ฝ์ ํ ํ์ผ ์ข
๋ฃ ์กฐ๊ฑด์ ์ ํธ๋ก ํ์ํ๊ฑฐ๋ ํ์ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์คํฌ๋ฆฝํธ๋ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ผ๋ CONTENT_LENGTH ๋ฐ์ดํธ ์ด์์ ์ฝ์ผ๋ ค๊ณ ์๋ํด์๋ ์ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์๋ฌด๋ ์์ต๋๋ค.
NPH(Non-parsed Header) ์คํฌ๋ฆฝํธ(์น์
5)์ ๊ฒฝ์ฐ ์๋ฒ๋ ์คํฌ๋ฆฝํธ์ ์ ๊ณต๋ ๋ฐ์ดํฐ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ณตํ ๋๋ก ์ ํํ๊ฒ ์๋ฒ์ ์ํด ๋ณ๊ฒฝ๋์ง ์๋๋ก ์๋ํด์ผ ํฉ๋๋ค.
์ ์ก ์ธ์ฝ๋ฉ์ ์์ฒญ ๋ณธ๋ฌธ์์ ์ง์๋์ง ์์ผ๋ฏ๋ก ์๋ฒ๋ ๋ฉ์์ง ๋ณธ๋ฌธ์์ ์ด๋ฌํ ์ธ์ฝ๋ฉ์ ์ ๊ฑฐํ๊ณ content_length๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ์ด ์์
์ด ๊ฐ๋ฅํ์ง ์์ผ๋ฉด(์: ๋ฒํผ๋ง์ด ํฌ๊ธฐ ๋๋ฌธ์) ์๋ฒ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๊ฑฐ๋ถํด์ผ ํฉ๋๋ค. ๋ํ ๋ฉ์์ง ๋ณธ๋ฌธ์์ ๋ด์ฉ ์ฝ๋ฉ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
4.3 Request Method
REQUEST_METHOD ๋ฉํ ๋ณ์์ ์ ๊ณต๋ Request Method๋ ์๋ต์ ์์ฑํ ๋ ์คํฌ๋ฆฝํธ๊ฐ ์ ์ฉํ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์๋ณํฉ๋๋ค. ์คํฌ๋ฆฝํธ ์์ฑ์๋ ํน์ ์์ฉํ๋ก๊ทธ๋จ์ ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ๋ฒ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ๋ฉ์๋๊ฐ ์ง์๋์ง ์๋ ์์ฒญ์ ์์ ํ๋ ๊ฒฝ์ฐ ์ค๋ฅ์ ํจ๊ป ์์ฒญ์ ๊ฑฐ๋ถํด์ผ ํฉ๋๋ค(์น์
6.3.3 ์ฐธ์กฐ).
4.3.1 GET
GET ๋ฉ์๋๋ ์คํฌ๋ฆฝํธ๊ฐ ๋ฉํ ๋ณ์ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์๋ฅผ ์์ฑํด์ผ ํจ์ ๋ํ๋
๋๋ค. ๊ด๋ก์ ๋ฐ๋ผ GET ๋ฐฉ๋ฒ์ '์์ 'ํ๊ณ '๋๋ฑ์ฑ'์ด๋ฉฐ ๋ฌธ์ ์์ฑ ์ด์ธ์ ์กฐ์น๋ฅผ ์ทจํด์๋ ์ ๋๋ค.
GET ๋ฐฉ๋ฒ์ ์๋ฏธ๋ ํ๋กํ ์ฝ๋ณ ๋ฉํ ๋ณ์์ ์ํด ์์ ๋ฐ ์ ์ ๋ ์ ์๋ค.
4.3.2 POST
POST ๋ฉ์๋๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฒญํ์ฌ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ณ ์์ฒญ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ฉ๋๋ HTML [18]์ ์์ ์ ์ถ์ด๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ์๊ตฌ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ์คํฌ๋ฆฝํธ์ ์ํ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ ค๋ ์๋์ด๋ค.
์คํฌ๋ฆฝํธ๋ ์ฒจ๋ถ๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ์ฝ๊ธฐ ์ ์ content_LENGTH ๋ณ์ ๊ฐ์ ํ์ธํ๊ณ content_TYPE ๊ฐ์ ํ์ธํ ํ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
4.3.3 HEAD
4.3.4 Protocol-Specific Methods
์คํฌ๋ฆฝํธ๋ HTTP/1.1 PUT ๋ฐ Delete์ ๊ฐ์ ํ๋กํ ์ฝ๋ณ ๋ฉ์๋๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
์๋ฒ๋ ์ผ๋ถ ๋ฉ์๋๊ฐ ์คํฌ๋ฆฝํธ์ ์ ํฉํ์ง ์๊ฑฐ๋ ํ์ฉ๋์ง ์๋๋ค๊ณ ํ๋จํ์ฌ ๋ฉ์๋ ์์ฒด๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ค๋ฅ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ฐํํ ์ ์์ต๋๋ค.
The server MAY decide that some methods are not appropriate or permitted for a script, and may handle the methods itself or return an error to the client.
4.4 The Script Command Line
์ผ๋ถ ์์คํ
์ CGI ์คํฌ๋ฆฝํธ์ ๋ฌธ์์ด ๋ฐฐ์ด์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์ง์ํฉ๋๋ค.
์ด๊ฒ์ ์ธ์ฝ๋ฉ๋์ง ์์ "=" ๋ฌธ์๋ฅผ ํฌํจํ์ง ์๋ URI ์ฟผ๋ฆฌ ๋ฌธ์์ด๊ณผ ํจ๊ป 'GET' ๋๋ 'HEAD' ์์ฒญ์ผ๋ก ์๋ณ๋๋ ์ธ๋ฑ์ฑ๋ HTTP ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฌํ ์์ฒญ์ ๊ฒฝ์ฐ ์๋ฒ๋ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๊ฒ์ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํ๊ณ ์ด๋์ ๊ท์น์ ์ฌ์ฉํ์ฌ ๋จ์ด๋ก ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํฉ๋๋ค.
ํ์ฑ ํ ๊ฐ ๊ฒ์์ด๋ URL๋ก ๋์ฝ๋ฉ๋๊ณ ์ ํ์ ์ผ๋ก ์์คํ
์ ์ ๋ฐฉ์์ผ๋ก ์ธ์ฝ๋ฉ๋ ๋ค์ ๋ช
๋ นํ ์ธ์ ๋ชฉ๋ก์ ์ถ๊ฐ๋ฉ๋๋ค.
์๋ฒ๊ฐ ์ธ์ ๋ชฉ๋ก์ ์ผ๋ถ๋ฅผ ์์ฑํ ์ ์๋ ๊ฒฝ์ฐ, ์๋ฒ๋ command line info๋ฅผ ์์ฑํ์ง ์์์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ์์ ์๊ฐ ์ด์ ์ฒด์ ๋๋ ์๋ฒ ์ ํ๋ณด๋ค ํฌ๊ฑฐ๋ ๋จ์ด ์ค ํ๋๊ฐ ์ธ์๋ก ํํ๋์ง ์์ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๋ ์ฟผ๋ฆฌ_STRING ๊ฐ์ ์ธ์ฝ๋ฉ๋์ง ์์ "=" ๋ฌธ์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํด์ผ ํ๋ฉฐ ์ธ์ฝ๋ฉ๋์ง ์์ ๊ฒฝ์ฐ ๋ช
๋ น์ค ์ธ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ฉ๋๋ค.
5. NPH Scripts โ ์ด๋ถ๋ถ์ ์ํด๋ ๋ ๊ฒ๊ฐโฆ?
5.1 ์ ์
์๋ฒ๋ NPH(Non-Parsed Header) ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ ์ ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ์๋ฒ๊ฐ ์๋ต ์ฒ๋ฆฌ์ ๋ํ ๋ชจ๋ ์ฑ
์์ ๋ ๋๊ธฐ๋ ์คํฌ๋ฆฝํธ์
๋๋ค.
์ด ๊ท๊ฒฉ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ง์ ๊ธฐ์ค์ผ๋ก NPH ์คํฌ๋ฆฝํธ๋ฅผ ์๋ณํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๊ด๋ก์ ์ด๋ค ์คํฌ๋ฆฝํธ๋ ์ค์ง ํ ๊ฐ์ง ์ ํ(NPH ๋๋ CGI)์ ์ถ๋ ฅ๋ง ์ ๊ณตํ ์ ์์ผ๋ฏ๋ก ์คํฌ๋ฆฝํธ ์์ฒด๋ 'NPH ์คํฌ๋ฆฝํธ'๋ก ์ค๋ช
๋๋ค. NPH๋ฅผ ์ง์ํ๋ ์๋ฒ๋ ์คํฌ๋ฆฝํธ ์ด๋ฆ์ด๋ ์์น์ ๋ฐ๋ผ NPH ์คํฌ๋ฆฝํธ๋ฅผ ์๋ณํ๊ธฐ ์ํ ๊ตฌํ ์ ์ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
5.2 NPH Response
์คํฌ๋ฆฝํธ์๋ ์๋ฒ ๋๋ ํด๋ผ์ด์ธํธ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ณด๋ด๋ ์์คํ
์ ์ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํ๋ฉฐ, ์คํฌ๋ฆฝํธ๋ ํญ์ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ๋ฌ๋ฆฌ ์ ์๋์ง ์๋ ํ ์ด๋ ๊ธฐ์กด์ CGI ์คํฌ๋ฆฝํธ์ ๋์ผํฉ๋๋ค.
ํ์ฌ NPH ์คํฌ๋ฆฝํธ๋ HTTP ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด์๋ง ์ ์๋ฉ๋๋ค. (HTTP) NPH ์คํฌ๋ฆฝํธ๋ HTTP ์ฌ์ [1], [4]์ ์น์
6์ ์ค๋ช
๋ ์ ์ฒด HTTP ์๋ต ๋ฉ์์ง๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ SERVER_PROTOCOL ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต์ ์ ์ ํ ํ์์ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ๋ํ ํน์ ํ๋กํ ์ฝ ๋ช
์ธ์์ ์ํด ์๊ตฌ๋ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋๋ ํ๋กํ ์ฝ ๊ณ ์ ์ ๋ฉํ ๋ณ์๋ฅผ ๋ฐ๋์ ๊ณ ๋ คํด์ผ ํ๋ค.
์๋ฒ๋ ์คํฌ๋ฆฝํธ ์ถ๋ ฅ์ด ์์ ๋์ง ์์ ์ํ๋ก ํด๋ผ์ด์ธํธ์ ์ ์ก๋๋๋ก ํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๊ฐ ํค๋ ํ๋์ ์ฌ๋ฐ๋ฅธ ๋ฌธ์ ์งํฉ(HTTP์ ๊ฒฝ์ฐ US-ASCII [9] ๋ฐ ISO 8859-1 [10])์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์๋ฒ๋ ์ต์ํ์ ๋ด๋ถ ๋ฒํผ๋ง๊ณผ ์ ์ก ๊ฐ์์ ๋ฒํผ๋ง ์์ด ์คํฌ๋ฆฝํธ ์ถ๋ ฅ์ด ํด๋ผ์ด์ธํธ๋ก ์ง์ ์ ์ก๋๋๋ก ์๋ํด์ผ ํฉ๋๋ค.
๊ตฌํ์์ ๋ฌ๋ฆฌ ์ ์๋์ง ์๋ ํ ์คํฌ๋ฆฝํธ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋์ผํ ์ฐ๊ฒฐ์ ํตํด ์ถ๊ฐ ์์ฒญ์ ๋ณด๋ผ ์ ์์์ ์๋ต์ ๋ํ๋ด์ง ์์์ผ ํฉ๋๋ค.
6. CGI Response
6.1 Response Handling
์คํฌ๋ฆฝํธ๋ ํญ์ ๋น์ด ์์ง ์์ ์๋ต์ ์ ๊ณตํด์ผ ํ๋ฏ๋ก ์ด ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ๋ค์ ๋ณด๋ด๋ ์์คํ
์ ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๋ฌ๋ฆฌ ์ ์๋์ง ์๋ ํ, ์ด๋ 'ํ์ค ์ถ๋ ฅ' ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.
์คํฌ๋ฆฝํธ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ํด๋น ์๋ต์ ์ค๋นํ ๋ REQUEST_Method ๋ณ์๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.
์๋ฒ๋ ์คํฌ๋ฆฝํธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํด์ผ ํ๋ timeout ๊ธฐ๊ฐ์ ๊ตฌํํ ์ ์๋ค. ์๋ฒ ๊ตฌํ์ด timeout๋ฅผ ์ ์ํ๊ณ timeout ๊ธฐ๊ฐ ๋ด์ ์คํฌ๋ฆฝํธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ ํ์ง ์๋ ๊ฒฝ์ฐ, ์๋ฒ๋ ์คํฌ๋ฆฝํธ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ ์ ์์ต๋๋ค.
6.2 Response Type
์๋ต์ ๋ฉ์์ง ํค๋์ ๋ฉ์์ง ๋ณธ๋ฌธ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋น ์ค๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๋ฉ์์ง ๋จธ๋ฆฌ๊ธ์ ํ๋ ์ด์์ ๋จธ๋ฆฌ๊ธ ํ๋๊ฐ ์์ต๋๋ค. ๋ณธ๋ฌธ์ด NULL์ผ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๋ ๋ฌธ์ ์๋ต, ๋ก์ปฌ ๋ฆฌ๋๋ ์
์๋ต ๋๋ ํด๋ผ์ด์ธํธ ๋ฆฌ๋๋ ์
(์ ํ์ฌํญ ๋ฌธ์ ํฌํจ) ์๋ต ์ค ํ๋๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ์๋์ ์๋ต ์ ์์์ ์๋ต์ ํค๋ ํ๋ ์์๋ ์ค์ํ์ง ์๋ค(BNF์์ ๋ํ๋์ง๋ง). ํค๋ ํ๋๋ ์น์
6.3์ ์ ์๋์ด ์์ต๋๋ค.
6.2.1 Document Response
CGI ์คํฌ๋ฆฝํธ๋ ์๋ต์ ์ฑ๊ณต ์ํ๋ฅผ ๋ํ๋ด๋ ์ ํ์ ์ค๋ฅ ์ฝ๋์ ํจ๊ป ๋ฌธ์ ์๋ต์ผ๋ก ์ฌ์ฉ์์๊ฒ ๋ฌธ์๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๋ Content-Type ํค๋ ํ๋๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค. ์ํ ํค๋ ํ๋๋ ์ ํ ์ฌํญ์ด๋ฉฐ, ์๋ต๋ ๊ฒฝ์ฐ status 200 'OK'์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ์๋ต์ด ์๋ต ํ๋กํ ์ฝ ๋ฒ์ ์ ์ค์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ์ ์ ํ๊ฒ ์์ ํด์ผ ํฉ๋๋ค.
6.2.2 Local Redirect Response
CGI ์คํฌ๋ฆฝํธ๋ ์์น ํค๋ ํ๋์ ๋ก์ปฌ ๋ฆฌ์์ค์ ๋ํ URI ๊ฒฝ๋ก ๋ฐ ์ฟผ๋ฆฌ ๋ฌธ์์ด('local-pathquery')์ ๋ฐํํ ์ ์์ต๋๋ค. ์ง์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ฌ์ฒ๋ฆฌํด์ผ ํจ์ ์๋ฒ์ ์๋ฆฝ๋๋ค.
local-redir-response = local-Location NL
์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ํค๋ ํ๋๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋ฐํํด์๋ ์ ๋๋ฉฐ, ์๋ฒ๋ URL์ด ํฌํจ๋ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์์ฑํ ์๋ต์ ์์ฑํด์ผ ํฉ๋๋ค.
scheme "://" server-name ":" server-port local-pathquery
6.2.3 Client Redirect Response
CGI ์คํฌ๋ฆฝํธ๋ Location ํค๋ ํ๋์ ์ ๋ URI ๊ฒฝ๋ก๋ฅผ ๋ฐํํ์ฌ ์ง์ ๋ URI๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ฌ์ฒ๋ฆฌํด์ผ ํจ์ ํด๋ผ์ด์ธํธ์ ์๋ฆด ์ ์์ต๋๋ค.
client-redir-response = client-Location *extension-field NL
์คํฌ๋ฆฝํธ๋ ์๋ฒ ์ ์ CGI ํ์ฅ ํ๋๋ฅผ ์ ์ธํ๊ณ ๋ค๋ฅธ ํค๋ ํ๋๋ฅผ ์ ๊ณตํด์๋ ์ ๋ฉ๋๋ค. HTTP ํด๋ผ์ด์ธํธ ์์ฒญ์ ๊ฒฝ์ฐ, ์๋ฒ๋ 302 'Found' HTTP ์๋ต ๋ฉ์์ง๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
6.2.4 Client Redirect Response with Document
CGI ์คํฌ๋ฆฝํธ๋ ์ฒจ๋ถ๋ ๋ฌธ์์ ํจ๊ป ์์น ํค๋ ํ๋์ ์ ๋ URI ๊ฒฝ๋ก๋ฅผ ๋ฐํํ์ฌ ์ง์ ๋ URI๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ฌ์ฒ๋ฆฌํด์ผ ํจ์ ํด๋ผ์ด์ธํธ์ ์๋ฆด ์ ์์ต๋๋ค.
์ํ ํค๋ ํ๋๋ ๋ฐ๋์ ์ ๊ณต๋์ด์ผ ํ๋ฉฐ ์ํ ๊ฐ 302 'Found'๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฅ ์ฝ๋, ์ฆ ํด๋ผ์ด์ธํธ ๋ฆฌ๋๋ ์
์ ์๋ฏธํ๋ ๋ค๋ฅธ ์ ํจํ ์ํ ์ฝ๋๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ์๋ต์ด ์๋ต ํ๋กํ ์ฝ ๋ฒ์ ์ ์ค์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ์ ์ ํ๊ฒ ์์ ํด์ผ ํฉ๋๋ค.
6.3 Response Header Fields
์๋ต ํค๋ ํ๋๋ ์๋ฒ๊ฐ ํด์ํ CGI ๋๋ ํ์ฅ ํค๋ ํ๋์ด๊ฑฐ๋ ํด๋ผ์ด์ธํธ์ ๋ฐํ๋๋ ์๋ต์ ํฌํจ๋ ํ๋กํ ์ฝ๋ณ ํค๋ ํ๋์
๋๋ค. ํ๋ ์ด์์ CGI ํ๋๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ฐ CGI ํ๋๋ ์๋ต์ ๋ ๋ฒ ์ด์ ๋ํ๋์ง ์์์ผ ํฉ๋๋ค. ์๋ต ํค๋ ํ๋์๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ์ด ์์ต๋๋ค.
ํ๋ ์ด๋ฆ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. NULL ํ๋ ๊ฐ์ ์ ์ก๋์ง ์๋ ํ๋์ ๋์ผํฉ๋๋ค. CGI-Response์ ๊ฐ ํค๋ ํ๋๋ ํ ์ค์ ์ง์ ํด์ผ ํฉ๋๋ค. CGI/1.1์ ์ฐ์ ๋ผ์ธ์ ์ง์ํ์ง ์์ต๋๋ค. ๊ณต๋ฐฑ์ ":"์ ํ๋ ๊ฐ ์ฌ์ด(ํ๋ ์ด๋ฆ๊ณผ ":" ์ฌ์ด๋ ์๋)์ ํ๋ ๊ฐ์ ํ ํฐ ์ฌ์ด์์๋ ํ์ฉ๋ฉ๋๋ค.
6.3.1 Content-Type
๋ด์ฉ ์ ํ ์๋ต ํ๋๋ ์ํฐํฐ ๋ณธ๋ฌธ์ ์ธํฐ๋ท ๋ฏธ๋์ด ์ ํ [6]์ ์ค์ ํฉ๋๋ค.
์ํฐํฐ ๋ณธ๋ฌธ์ด ๋ฐํ๋๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ ์๋ต์ ๋ด์ฉ ์ ํ ํ๋๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, ์๋ฒ๋ ์ฌ๋ฐ๋ฅธ ๋ด์ฉ ์ ํ์ ๊ฒฐ์ ํ๋ ค๊ณ ์๋ํ์ง ์์์ผ ํฉ๋๋ค. ๊ฐ์ charset ๋งค๊ฐ ๋ณ์๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ์์ ๋์ง ์์ ์ํ๋ก ํด๋ผ์ด์ธํธ์ ์ ์ก๋์ด์ผ ํฉ๋๋ค.
๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ์๋์ง ์๋ ํ ํด๋ผ์ด์ธํธ๊ฐ ํ
์คํธ ๋ฏธ๋์ด ์ ํ์ ๋ํด ๊ฐ์ ํ ๊ธฐ๋ณธ ๋ฌธ์ ์งํฉ์ ํ๋กํ ์ฝ์ด HTTP์ด๊ณ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก US-ASCII์ธ ๊ฒฝ์ฐ ISO-8859-1์
๋๋ค. ๋ฐ๋ผ์ ์คํฌ๋ฆฝํธ์๋ ๋ฌธ์ ์งํฉ ๋งค๊ฐ ๋ณ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋ํ ์ค๋ช
์ HTTP/1.1 ๊ท๊ฒฉ[4]์ ์น์
3.4.1์ ์ฐธ์กฐํ์ญ์์ค.
6.3.2 Location
Location ํค๋ ํ๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์ค์ ๋ฌธ์๊ฐ ์๋ ๋ฌธ์์ ๋ํ ์ฐธ์กฐ(reference)๋ฅผ ๋ฐํํ๋๋ก ์๋ฒ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค(์น์
6.2.3 ๋ฐ 6.2.4 ์ฐธ์กฐ). ํด๋ผ์ด์ธํธ๊ฐ ์ฐธ์กฐ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ํ๋ด๋ ์ ๋ URI(์ ํ์ ์ผ๋ก ์กฐ๊ฐ ์๋ณ์๊ฐ ์๋ URI) ๋๋ ์๋ฒ๊ฐ ์ฐธ์กฐ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์ ํด๋ผ์ด์ธํธ์ ์๋ต์ผ๋ก ๋ฐํํ๋ ๊ฒ์ ๋ํ๋ด๋ ๋ก์ปฌ URI ๊ฒฝ๋ก(์ ํ์ ์ผ๋ก ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด ์๋ URI)์ด๋ค.
์ ๋์ด์ ๊ตฌ๋ฌธURI๋ RFC 2396[2] ๋ฐ RFC 2732[7]์ ์ง์ ๋ ๋ฌธ์์์ ์ด ๋ฌธ์์ ํตํฉ๋ฉ๋๋ค. ์ ํจํ ์ ๋๊ฐURI๋ ํญ์ ๊ตฌ์ฑํ ์ด๋ฆ ๋ค์ ":"๋ก ์์ํ๊ณ ๊ตฌ์ฑํ ์ด๋ฆ์ ์์ซ์ "+", "-" ๋๋ ""๋ก ๊ณ์๋ฉ๋๋ค. ๋ก์ปฌ URI ๊ฒฝ๋ก ๋ฐ ์ฟผ๋ฆฌ๋ ์๋ ๊ฒฝ๋ก ๋๋ NULL์ด ์๋ ์ ๋ ๊ฒฝ๋ก์ฌ์ผ ํ๋ฏ๋ก "/"๋ก ์์ํด์ผ ํฉ๋๋ค.
์์ฒญ์ ์ฒจ๋ถ๋ ๋ฉ์์ง ๋ณธ๋ฌธ(์: POST ์์ฒญ)์ ๋ฆฌ๋๋ ์
๋์์ธ ๋ฆฌ์์ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
6.3.3 Status
Status ํค๋ ํ๋์๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์คํฌ๋ฆฝํธ์ ์ฑ๊ณต ์์ค์ ๋ํ๋ด๋ 3์๋ฆฌ ์ ์ ๊ฒฐ๊ณผ ์ฝ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ํ ์ฝ๋ 200 'OK'์ ์ฑ๊ณต์ ๋ํ๋ด๋ฉฐ, ๋ฌธ์ ์๋ต์ ๋ํด ๊ฐ์ ๋ ๊ธฐ๋ณธ๊ฐ์
๋๋ค. ์ํ ์ฝ๋ 302 'Found'๋ ์์น ํค๋ ํ๋ ๋ฐ ์๋ต ๋ฉ์์ง ๋ณธ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค. CONTENT_TYPE ๋๋ฝ๊ณผ ๊ฐ์ ์ ์ ์๋ ์์ฒญ ํ์์ ์ํ ์ฝ๋ 400 'Bad Request'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ง์๋์ง ์๋ REQUEST_Method๋ฅผ ์์ ํ๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ์์ ์ํ ์ฝ๋ 501 'Not Implemented'๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์ ํจํ ์ํ ์ฝ๋๋ HTTP ์ฌ์ [1], [4]์ ์น์
6.1.1์ ๋์ด๋์ด ์์ผ๋ฉฐ, IANA HTTP ์ํ ์ฝ๋ ๋ ์ง์คํธ๋ฆฌ [8] ๋ฐ MAY๋ฅผ ์์ ๋์ด๋ ์ฝ๋์ ํจ๊ป ์ฌ์ฉํ๊ฑฐ๋ ๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ HTTP/1.1 ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ SERVER_Protocol์ ๊ฐ์ ํ์ธํด์ผ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ์ง์ํ์ง ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ง๋ ์ค๋ฅ 405 'Method Not Allowed' HTTP/1.1 ์์ฒญ์ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค.
์ค๋ฅ ์ํ ์ฝ๋๋ฅผ ๋ฐํํ๋ ๊ฒ์ ์คํฌ๋ฆฝํธ ์์ฒด์ ์ค๋ฅ ์ํ๋ฅผ ์๋ฏธํ ํ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฒ์ ์ํด ์ค๋ฅ ์ฒ๋ฆฌ๊ธฐ๋ก ํธ์ถ๋๋ ์คํฌ๋ฆฝํธ๋ ์๋ฒ์ ์ค๋ฅ ์กฐ๊ฑด์ ์ ํฉํ ์ฝ๋๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
reason-phrase์ ์ธ๊ฐ์ด ์ฌ์ฉํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ์ ๋ฐํ๋๋ ์ค๋ฅ์ ๋ํ ํ
์คํธ ์ค๋ช
์
๋๋ค.
6.3.4 Protocol-Specific Header Fields
์ด ์คํฌ๋ฆฝํธ๋ SERVER_PROTOCOL(HTTP/1.0 [1] ๋๋ HTTP/1.1 [4]) ์ฌ์์์ ์ ์๋ ์๋ต ๋ฉ์์ง์ ๊ด๋ จ๋ ๋ค๋ฅธ ํค๋ ํ๋๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. ์๋ฒ๋ CGI ํค๋ ๊ตฌ๋ฌธ์ ํค๋ ๋ฐ์ดํฐ๋ฅผ HTTP ํค๋ ๊ตฌ๋ฌธ์ผ๋ก ๋ณํํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, CGI ์คํฌ๋ฆฝํธ์ ์ฌ์ฉ๋๋ ์ค ๋ฐ๊ฟ์ ๋ฌธ์ ์์(์ ๋์ค์ US-ASCII LF ๋ฑ)๋ HTTP(US-ASCII CR ๋ค์ LF)์์ ์ฌ์ฉ๋๋ ๋ฌธ์ ์์์ ๋ค๋ฅผ ์ ์์ต๋๋ค.์ด ์คํฌ๋ฆฝํธ๋ ํด๋ผ์ด์ธํธ ์ธก ํต์ ๋ฌธ์ ์ ๊ด๋ จ๋ ํค๋ ํ๋๋ฅผ ๋ฐํํ์ง ์์์ผ ํ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ณด๋ด๋ ์๋ฒ์ ๊ธฐ๋ฅ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐํํ ํค๋ ํ๋๋ฅผ ์ ๊ฑฐํ ์ ์๋ค. ์คํฌ๋ฆฝํธ์์ ๋ฐํ๋ ํค๋ ํ๋์ ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ฒด ์ ์ก๋ ํค๋ ํ๋ ๊ฐ์ ์ถฉ๋์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
6.3.5 Extension Header Fields
์ถ๊ฐ ๊ตฌํ ์ ์ CGI ํค๋ ํ๋๊ฐ ์์ ์ ์์ผ๋ฉฐ ํ๋ ์ด๋ฆ์ "X-CGI-"๋ก ์์ํด์ผ ํฉ๋๋ค. ์๋ฒ๋ ์คํฌ๋ฆฝํธ๋ก๋ถํฐ ์์ ๋ "X-CGI-"๋ก ์์ํ๋ ์ด๋ฆ์ ๊ฐ์ง ์ธ์๋์ง ์๋ ํค๋ ํ๋๋ฅผ ๋ฌด์ํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
6.4 Response Message-Body
์๋ต ๋ฉ์์ง ๋ณธ๋ฌธ์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ฐํํ ์ฒจ๋ถ document์
๋๋ค. ์๋ฒ๋ ์คํฌ๋ฆฝํธ๊ฐ ํ์ผ ์ข
๋ฃ ์กฐ๊ฑด์ ํตํด ๋ฉ์์ง ๋ณธ๋ฌธ์ ๋์ ์๋ฆด ๋๊น์ง ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํฉ๋๋ค. ๋ฉ์์ง ๋ณธ๋ฌธ์ HEAD ์์ฒญ์ด๋ ํ์ํ ์ ์ก ์ฝ๋ฉ, ์ฝํ
์ธ ์ฝ๋ฉ ๋๋ ๋ฌธ์ ์งํฉ ๋ณํ์ ์ ์ธํ๊ณ ์์ ์์ด ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋์ด์ผ ํฉ๋๋ค.
7. ์์คํ ์ฌ์
8. ๊ตฌํ
9. ๋ณด์ ๊ณ ๋ ค์ฌํญ
9.6 ๋ฐ์ดํฐ ๊ธธ์ด ๋ฐ ๋ฒํผ๋ง ๊ณ ๋ ค ์ฌํญ
์ด ๊ท๊ฒฉ์ ์คํฌ๋ฆฝํธ์ ํ์๋๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๊ธธ์ด์ ์ ํ์ ๋์ง ์์ต๋๋ค. ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ํฌ๊ธฐ์ ์ ์ ์ผ๋ก ํ ๋น๋ ๋ฒํผ๊ฐ ํ ๋ฒ์ ์ ์ฒด ์ ์ถ์ ํฌํจํ๊ธฐ์ ์ถฉ๋ถํ๋ค๊ณ ๊ฐ์ ํด์๋ ์ ๋ฉ๋๋ค. ์ ์คํ ์ค๋ฒํ๋ก ๊ฒ์ฌ ์์ด ๊ณ ์ ๊ธธ์ด ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ณต๊ฒฉ์๊ฐ ์ด์ ์ฒด์ ์ '์คํ ์ค๋งค์ฑ' ๋๋ '์คํ ์ค๋ฒํ๋ก' ์ทจ์ฝ์ฑ์ ์ด์ฉํ ์ ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋์คํฌ ๋๋ ๊ธฐํ ๋ฒํผ๋ง ๋ฏธ๋์ด์ ๋๋ ์ ์ถ์ ์คํํ ์ ์์ง๋ง ๋๋ ์ ์ถ์ด ๋น ๋ฅด๊ฒ ์ฐ์๋๋ฉด ์๋น์ค ๊ฑฐ๋ถ ์ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฉ์์ง ๋ณธ๋ฌธ์ CONTENT_LENGTH๊ฐ ๋ฆฌ์์ค ๊ณ ๋ ค์ฌํญ๋ณด๋ค ํด ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๋ ํ๋กํ ์ฝ ๋ฒ์ ์ ์ ํฉํ ์ค๋ฅ ์ํ๋ก ์๋ตํด์ผ ํฉ๋๋ค. ์ ์ฌ์ ์ผ๋ก ์ ์ฉ ๊ฐ๋ฅํ ์ํ ์ฝ๋์๋ 503 'Service Unavailable'(HTTP/1.0 ๋ฐ HTTP/1.1), 413 'Request Entity Too Large'(HTTP/1.1) ๋ฐ 414 'Request-URI Too Large'(HTTP/1.1)๊ฐ ํฌํจ๋ฉ๋๋ค.
์คํฌ๋ฆฝํธ์์ CGI ์๋ต์ ์ฒ๋ฆฌํ๋ ์๋ฒ์๋ ๋น์ทํ ๊ณ ๋ ค ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ์ ์ํด ๋ฐํ๋๋ ํค๋ ๋๋ ๋ฉ์์ง ๋ณธ๋ฌธ์ ๊ธธ์ด์ ์ ํ์ด ์์ผ๋ฉฐ, ์๋ฒ๋ ๋ชจ๋ ํฌ๊ธฐ์ ์ ์ ์ผ๋ก ํ ๋น๋ ๋ฒํผ๊ฐ ์ ์ฒด ์๋ต์ ํฌํจํ๊ธฐ์ ์ถฉ๋ถํ๋ค๊ณ ๊ฐ์ ํด์๋ ์ ๋ฉ๋๋ค.