CGI ÇÁ·Î±×·¥Àº ȯ°æº¯¼ö³ª Ç¥ÁØÀÔ·Â, ¸í·ÉÇàÀ¸·ÎºÎÅÍ ÀÔ·ÂÀ» ¹Þ¾Æ Ç¥ÁØ Ãâ·Â(stdout)À¸·Î Ãâ·ÂÀ» ³»º¸³½´Ù. ¶ÇÇÑ CGI ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀº µ¿ÀûÀ¸·Î »ý¼ºÇس½ »õ·Î¿î ¹®¼(Content-Type)ÀÏ ¼öµµ ÀÖ°í ¶Ç´Â ¼¹ö°¡ ƯÁ¤ÇÑ ¹®¼¸¦ µÇµµ·Á ÁÖµµ·Ï ÇÏ´Â Áö½ÃÁ¤º¸(Locations)ÀÏ ¶§µµ ÀÖÀ¸¸ç, ´ÜÁö ¸í·ÉÀÇ ¼öÇà°á°ú¸¦ ¸®ÅÏÇÏ´Â »óŶóÀÎ(status)¼öµµ ÀÖ´Ù.
CGIÀÇ Ãâ·ÂÀº ¹Ýµå½Ã ÀÌ ¼¼°¡Áö ŸÀÔÁß Çϳª À̾î¾ßÇϸç, Çì´õ¿Í ¸öü¸¦ ºÐ¸®ÇϱâÀ§ÇØ ¹ÝµíÀÌ Çì´õ¿Í ¸öü »çÀÌ¿¡ ºóÁÙÀ» ³Ö¾î¾ß ÇÑ´Ù.
Content-type: ¸®Å쵃 ¹®¼ÀÇ MIME ŸÀÔ
Content-type´Â ¸®ÅϵǴ ¹®¼ÀÇ MIME ŸÀÔÀ» ÁöÁ¤ÇÏ´Â Ç׸ñÀÌ´Ù. ÇöÀç ÀÎÅÍ³Ý »ó¿¡´Â ¾ÆÁÖ ¸¹Àº MIME ŸÀÔÀÌ Á¸ÀçÇϸç, ÀÌ MIME ŸÀÔ Áß Çϳª¸¦ Content-type Çì´õ¸¦ ÀÌ¿ëÇؼ Ãâ·ÂÇØ¾ß ÇÑ´Ù. CGI ÇÁ·Î±×·¥ÀÇ Ãâ·ÂÀº ¹ÝµíÀÌ Content-type, Location, Status LineÁß Çϳª¸¦ °¡Àå ¸ÕÀú Ãâ·ÂÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ Çì´õ¿¡ ÀÌ¾î ºóÁÙÀÌ Çϳª »ðÀԵǾî¾ß ÇÑ´Ù.
¸¸¾à ºóÁÙÀÌ »ðÀÔµÇÁö ¾ÊÀº °æ¿ì, "HTTPd: malformed header"¶ó´Â 500 ¼¹ö¿¡¶óÀ» ¹ß»ýÇÑ´Ù.
Content-Type: ÀÇ Ãâ·ÂÇü½ÄÀº ´ÙÀ½°ú °°´Ù.
1: > ctype.cgi
2: Content-type: text/html
3:
4: <html>
5: <body>
6: ...
7: </body>
8: </html>
À§ÀÇ Ãâ·Â Çü½Ä¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ CGIÀÇ Ãâ·ÂÀÇ Ã¹ÁÙÀº 2Çà°ú °°ÀÌ Content-TypeÀÌ Ãâ·ÂµÇ¾î¾ß ÇÑ´Ù. Content-TypeÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾ÊÁö¸¸ Content-Type¿Í ÄÝ·Ð(:)»çÀÌ¿¡ °ø¹éÀÌ À־ ¾ÈµÈ´Ù. ¸¸¾à Content-Type¿Í ÄÝ·Ð »çÀÌ¿¡ °ø¹éÀÌ Á¸ÀçÇÏ´Â °æ¿ì Content-Type header·Î ÀνÄÇÏÁö ¸øÇϹǷΠ4-8Çà±îÁöÀÇ ³»¿ëÀ» ±×´ë·Î º¸¿©ÁÖ°Ô µÈ´Ù.
Content-TypeÀÌ ÀÖ°í, ºÐ¸íÈ÷ Çì´õ¿Í ¸öü(body)¸¦ ±¸ºÐÇϱâ À§ÇÑ ºóÁÙÀÌ À־ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏÁö ¾Ê°í, "Unknown File Type"À̶ó´Â âÀÌ ¶ß´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ °æ¿ì¿¡´Â Content-Type¿¡¼ MIME TypeÀ» À߸ø ÁöÁ¤ÇÑ °æ¿ì¿¡ ¹ß»ýÇÑ´Ù. Áï, À§ÀÇ ¿¹¿¡¼ text/htmlÀ» test/html¿Í °°ÀÌ À߸ø ÀûÀº °æ¿ì¿¡ ¹ß»ýÇÑ´Ù.
3ÇàÀº Çì´õ¿Í ¸öü¸¦ ºÐ¸®ÇϱâÀ§ÇØ ¹ÝµíÀÌ Á¸ÀçÇؾßÇÏ´Â Ç׸ñÀÌ´Ù. 4-8ÇàÀº ½ÇÁ¦ Client¿¡ ¸®ÅϵǴ ³»¿ëÀ¸·Î¼ Content-Type¿¡ µû¶ó ³»¿ëÀÌ ´Þ¶óÁø´Ù. À§ÀÇ ¿¹ÀÇ °æ¿ì Content-Type°¡ text/htmlÀ̹ǷΠ¸öüÀÇ ³»¿ë ¿ª½Ã HTML ¹®¼°¡ µÈ´Ù.
Location: ¸®Å쵃 ¹®¼ÀÇ URL
Locationµµ Content-Type¿Í ¸¶Âù°¡Áö·Î HTTP ¸í¼¼¼¿¡¼ Á¤ÀÇÇÏ°í ÀÖ´Â HeaderÀÌ´Ù. ÀÌ Çì´õ´Â ¾î¶² ¹®¼¿¡ ´ëÇÑ ·¹ÆÛ·±½º(reference)¸¦ µÇµ¹·Á ÁÖ°íÀÚ ÇÒ ¶§ »ç¿ëµÈ´Ù. À¥ ¼¹ö´Â ÀÌ Çì´õ¸¦ ¸¸³ª°Ô µÇ¸é ´ÙÀ½¿¡ µû¶ó¿À´Â °ªÀÌ Àý´ë °æ·ÎÀÏ ¶§´Â ÇØ´çÇÏ´Â ¹®¼¸¦ Á÷Á¢ µ¹·Á ÁÖ°í, ¿ÏÀüÇÑ URL(¿¹¸¦ µé¾î, http://any.host.name/path/to/new/doc.html)ÀÏ ¶§´Â Ŭ¶óÀ̾ðÆ®¿¡ redirect¸¦ º¸³»ÁÖ°Ô µÈ´Ù. LocationÀÇ Ãâ·ÂÇü½ÄÀº ´ÙÀ½°ú °°´Ù.
Local À¥ ¼¹ö·Î RedirectinÇÏ´Â °æ¿ì
1: > location1.cgi
2: Location: /~artech/index.html
3:
Remote À¥ ¼¹ö·Î RedirectingÇÏ´Â °æ¿ì
1: > location2.cgi
2: Location: http://www.windows95.com
3: content-type: text/html
4:
5: <html><body>
6: ÀÌ URLÀº <a href="http://www.windows95.com">http://www.windows95.com</a>
7: ·Î º¯°æµÇ¾ú½À´Ï´Ù.
8: </body></html>
Content-Type°ú ¸¶Âù°¡Áö·Î ùÇàÀº Location Çì´õ°¡ µÈ´Ù. Location Çì´õµµ Content-Type Çì´õ¿Í ¸¶Âù°¡Áö·Î Çì´õ¿Í ¸öü¸¦ ºÐ¸®ÇϱâÀ§ÇÑ ºóÁÙÀÌ ¹ÝµíÀÌ Ãâ·ÂµÇ¾î¾ß ÇÑ´Ù. ´Ù¸¸ Content-Type Çì´õ¿ÍÀÇ Â÷ÀÌÁ¡Àº Content-TypeÀÌ MIME ŸÀÔÀ» Á¤ÀÇÇÏ°í ¸öü(body)¿¡ ÇØ´ç ¹®¼¸¦ Á÷Á¢ Ãâ·ÂÇÏ´Â ¹Ý¸é¿¡ LocationÀº ¹®¼ÀÇ À§Ä¡¸¸À» µÇµ¹·Á ÁÖ¸é µÇ¹Ç·Î ¸öü(body)ÀÇ ³»¿ëÀÌ ¾ø´Ù´Â °ÍÀÌ´Ù. ÀÌ¿Í °°ÀÌ ¹®¼¸¦ RedirentingÇÏ´Â °æ¿ì ¼¹ö´Â 3xx¹ø´ë »óÅÂÄڵ带 Client¿¡ Àü¼ÛÇÑ´Ù.
Status Line »óŶóÀÎ
ÀϹÝÀûÀ¸·Î ¼¹ö°¡ CGI ÇÁ·Î±×·¥À» ¼öÇàÇÏ´Â °æ¿ì CGI ÇÁ·Î±×·¥ÀÇ Ãâ·Â¿¡ Ãß°¡Çì´õ¿Í »óÅÂÁ¤º¸¸¦ µ¡ºÙ¿© Ŭ¶óÀ̾ðÆ®¿¡ Àü¼ÛÇϰԵȴÙ. ±×·¯³ª ¸î¸î Ưº°ÇÑ °æ¿ì CGI ÇÁ·Î±×·¥¿¡¼ »óÅÂÁ¤º¸¸¦ Á÷Á¢ Ãâ·ÂÇؾßÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ÀÌ °æ¿ì CGIÀÇ Ãâ·ÂÀº ¼¹ö¸¦ °æÀ¯ÇÏÁö ¾Ê°í Client¿¡ Á÷Á¢ Àü¼ÛµÇ±â ¶§¹®¿¡ ÀÌ·¯ÇÑ CGI¸¦ Non-Parsed-Header CGI(NPH-CGI)¶ó°í ÇÑ´Ù.
»óŶóÀÎ(Status Line)Àº ¾Õ Àý¿¡¼ º¸¾Òµí ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÈ´Ù.
HTTP-Version SP Status-Code SP Reason-Phrase CRLF
»óŶóÀÎÀ» Ãâ·ÂÇÏ´Â Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
1: > nph-status.cgi
2: HTTP/1.0 200 OK
3: Content-Type: text/html
4:
5: <html>
6: <body>
7: <h1> ¹®¼Àü¼ÛÀÌ ¼º°øÀûÀÔ´Ï´Ù </h1>
8: </body>
9: </html>
¿©±â¼ 2 ÇàÀÌ »óŶóÀÎÀ» Ãâ·ÂÇÏ´Â ÇàÀÌ´Ù. »óŶóÀθ¸ Ãâ·ÂÇصµ µÇÁö¸¸ ÀϹÝÀûÀ¸·Î »óŶóÀθ¸ Ãâ·ÂµÇ´Â °æ¿ìº¸´Ù´Â À§ÀÇ ¿¹¿¡¼Ã³·³ Content-TypeÀ» Ãâ·ÂÇϰųª LocationÀ» ÇÔ²² Ãâ·ÂÇÏ´Â °æ¿ì°¡ ÀϹÝÀûÀÌ´Ù. »óŶóÀΰú Header¸¦ ÇÔ²² Ãâ·ÂÇÏ´Â °æ¿ì, Çì´õºÎ¿Í ¸öüºÎ(body) »çÀ̸¦ ºóÁÙ·Î ±¸ºÐÇϸç, Çì´õ¿Í »óŶóÀÎÀº ºóÁÙ¾øÀÌ Ãâ·ÂÇØ¾ß ÇÑ´Ù.