³¯Â¥: 1996-03-02 | ±Û¾´ÀÌ: µµ¾Æ | 29872 ¹ø | ÇÁ¸°Æ® | ¸ÞÀϷκ¸³»±â

Á¦ 2°­ - CGIÀÇ °³³ä


CGI´Â Á¤Àû, ´Ü¹æÇâ Åë½ÅÀÎ À¥¿¡¼­ µ¿Àû ¾ç¹æÇâÀ» Åë½Å ¼öÇàÇÔÀ¸·Î¼­ ´ëÈ­ÀûÀÎ À¥ ¼­ºñ½º¸¦ Á¦°øÇϱâÀ§ÇØ µîÀåÇß´Ù. ÇöÀç¿¡´Â ÀÌ·¯ÇÑ CGI¸¦ ´ëüÇÒ ¼ö ÀÖ´Â ±â¼úÀÌ »ó´çÈ÷ ¸¹ÀÌ µîÀåÇßÁö¸¸ ¾ÆÁ÷±îÁöµµ CGIÀÇ Á߿伺°ú È°¿ëµµ´Â ¹«±Ã¹«ÁøÇÏ´Ù. µû¶ó¼­ ¿©±â¿¡¼­´Â CGIÀÇ ±âº»ÀûÀÎ °³³ä°ú µ¿ÀÛ¿ø¸®, CGI ÇÁ·Î±×·¡¹Ö¿¡ ÇʼöÀûÀÎ FORM °ü·Ã ű×, HTTP ¸í¼¼, CGI ¸í¼¼¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù. CGI¶õ?

óÀ½ ÀÎÅͳÝÀÌ µîÀåÇßÀ» ¶§±îÁö¸¸ Çصµ ÀÎÅͳÝÀº ¸î¸î ¼Ò¼öÀÇ Æ¯¼öÇÑ »ç¶÷µéÀÇ ÀüÀ¯¹°À̾ú´Ù. À̵éÀº telnetÀ» ÅëÇØ ¿ø°Ý ¼­ºñ½º¿¡ Á¢¼ÓÇÏ°í, FTP¸¦ ÅëÇØ ÆÄÀÏÀ» ´Ù¿î¹Þ°í ¾ÆÄ¡¸¦ ÅëÇØ ÆÄÀÏÀ» °Ë»öÇß´Ù.

1992³â CERN¿¡ ÀÇÇØ À¥¼­ºñ½º°¡ óÀ½ ¹ßÇ¥µÇ°í, 1993³â MosaicÀÌ ¹ßÇ¥µÇ¸é¼­ ÀÎÅͳÝÀº ÀϹݴëÁß ¼Ó¿¡ ±Þ¼Óµµ·Î ÆÄ°íµé¾ú´Ù. À¥ÀÌ Á¦°øÇÏ´Â Æí¸®ÇÑ ÀÎÅÍÆäÀ̽º¿Í Hyperlink¿¡ ÀÇÇÑ ÀÚ·áÀÇ °øÀ¯´Â ¿À´Ã³¯ ÀÎÅͳÝÀ» °¡Àå ´ëÁßÀûÀÎ ¸Åü·Î ¸¸µé¾ú´Ù.

À¥ÀÇ Æí¸®ÇÔ¿¡ Àͼ÷ÇØÁø »ç¶÷µéÀº ÀÌÀü¿¡ »ç¿ëÇÏ´ø ¸ðµç ¼­ºñ½º(Archie, Mail, Finger, FTP µî)¸¦ À¥À» ÅëÇØ Á¦°ø¹Þ±æ ¿øÇß´Ù. ±×·¯³ª À¥Àº HTTP¶ó´Â ÇÁ·ÎÅäÄÝÀ» ±â¹ÝÀ¸·Î µ¿ÀÛÇϸç, ´Ù¸¥ ¼­ºñ½º ¿ª½Ã µ¶ÀÚÀûÀÎ ÇÁ·ÎÅäÄÝ ÇÏ¿¡¼­ µ¿ÀÛÇÑ´Ù. µû¶ó¼­ HTTP¸¦ ÅëÇØ ´Ù¸¥ ¼­ºñ½º¸¦ »ç¿ëÇÏ·Á¸é HTTP¶ó´Â Åë½Å±Ô¾àÀ» ´Ù¸¥ Åë½Å±Ô¾àÀ¸·Î º¯È¯ÇÏ°í ´Ù¸¥ Åë½Å±Ô¾àÀ» HTTP·Î º¯È¯ÇØ¾ß ÇÑ´Ù.

ÀÌ·¯ÇÑ ¿ªÇÒ(µÎ°³ÀÇ ¼­·Î ´Ù¸¥ ÇÁ·ÎÅäÄÝÀ» ¿¬µ¿½ÃÅ°´Â)À» ÇÏ´Â °ÍÀ» ¼ÒÇÁÆ®¿þ¾î °ÔÀÌÆ®¿þÀ̶ó°í Çϸç ÀÌ·¯ÇÑ °ÔÀÌÆ®¿þÀÌÀÇ Ç¥ÁؾÈÀÌ CGIÀÌ´Ù. Áï, CGI´Â µÎ °³ÀÇ ¼­·Î ´Ù¸¥ ÇÁ·ÎÅäÄÝÀ» ¿¬µ¿Çϴ ǥÁؾÈÀÎ ¼ÀÀÌ´Ù.

ÀÌ CGI Ç¥ÁØÀ» µû¶ó¼­ ¸¸µé¾îÁø ÇÁ·Î±×·¥À» CGI ÇÁ·Î±×·¥ ¶Ç´Â CGI ½ºÅ©¸³Æ®(script)¶ó°í ÇÑ´Ù. CGI ÇÁ·Î±×·¥Àº º¸ÅëÀÇ HTML¹®¼­Ã³·³ ÇÑ ¹ø »ý¼ºµÈ ÈÄ¿¡ ³»¿ëÀÇ º¯È­¾øÀÌ Á¸ÀçÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¿äûÀÌ ÀÖÀ» °æ¿ì À¥ ¼­¹ö¿¡ ÀÇÇؼ­ ¹Ù·Î¹Ù·Î »ý¼ºµÇ´Â ÇüŸ¦ ¶è´Ù. ±×·¯¹Ç·Î ÀԷµǴ Á¤º¸³ª ½Ã°£¿¡ µû¶ó µ¿ÀûÀÎ Á¤º¸¸¦ »ý»ýÇس¾ ¼ö ÀÖ´Ù. CGI ÇÁ·Î±×·¥Àº À§¿¡¼­ ¿¹·Î µç µ¥ÀÌÅÍ º£À̽º °ÔÀÌÆ®¿þÀÌ ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº ¿©·¯ °æ¿ì¿¡ ÀÌ¿ëµÉ ¼ö ÀÖ´Ù.

  • À¥Ä«¿îÅÍ ¾î¶² ¹®¼­°¡ »ý¼º ÈÄ¿¡ ¾î´À Á¤µµ³ª ¿¢¼¼½º°¡ µÇ¾ú´Â°¡¸¦ Ç¥½Ã
  • °Ë»ö¿£Áø À¥ ¼­¹ö¿¡¼­ Á¦°øµÇ´Â Àüü ¹®¼­ °¡¿îµ¥¼­ ƯÁ¤ÇÑ ¹®ÀÚ¿­À» °Ë»ö
  • ¹æ¸í·Ï ÀÚ½ÅÀÇ È¨ÆäÀÌÁö¿¡ ¹æ¹®ÇÑ »ç¶÷µéÀÇ ¹æ¸í·Ï
  • Server Side Imagemap
  • °Ô½ÃÆÇ
  • ¸ÞÀÏ °ÔÀÌÆ®¿þÀÌ
°£´ÜÇÑ CGI ¸í¼¼

  1. ÀÔ·Â
    FORMÀÇ Method
    GET: ȯ°æº¯¼ö. QUERY_STRING
    POST: Ç¥ÁØÀÔ·Â. STDIN
    ISINDEX ű×: ¸í·ÉÇà. @ARGV
  2. Ãâ·Â
    ¸®Å쵃 ¹®¼­ÀÇ MIME Type: Content-type: text/html
    ¸®Å쵃 ¹®¼­ÀÇ À§Ä¡: Location: HTTP://ix.david.bit.co.kr/~artech/
    »óÅÂÇà: HTTP/1.0 200 OK
  3. ÀÎÄÚµù
    °ø¹é: +·Î ´ëÄ¡
    ÆûÀÇ À̸§°ú °ª: name=value
    À̸§, °ªÀÇ ½Ö: name1=value1&name2=value2
    Ư¼ö¹®ÀÚ: %HH
    HTTPÀÇ µ¿ÀÛ¿ø¸®

    HTTPÀÇ µ¿ÀÛ¿ø¸®¸¦ ¾Ë¾Æº¸±âÀ§ÇØ telnetÀ» ÀÌ¿ëÇØ º¸ÀÚ. ´ÙÀ½Àº telnetÀ» ÀÌ¿ëÇؼ­ À¥¼­ºñ½º¸¦ Á¦°ø¹Þ´Â ¿¹ÀÌ´Ù. Unix ¸í·ÉÇà¿¡¼­ ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇØ º¸±â¹Ù¶õ´Ù.

    GET¿¡ ÀÇÇÑ ¹®¼­ÀÇ ¿äû

    % telnet syscon.soongsil.ac.kr 80
    Trying 203.253.15.34 ...
    Connected to syscon.soongsil.ac.kr.
    Escape character is '^]'.
    GET /~artech/cgi-bin/rguest.cgi?key=±è HTTP/1.0
    
    HTTP/1.0 200 OK
    Server: Microsoft-PWS/3.0
    Date: Wed, 10 Sep 1997 18:02:48 GMT
    Content-Type: text/html
    Accept-Ranges: bytes
    Last-Modified: Tue, 09 Sep 1997 16:32:24 GMT
    Content-Length: 708
    
    <html>
    <head>
    <TITLE>Welcome to DoA's World !!!</TITLE>
    </head>
    ...
    </html>
    Connection closed by foreign host.
    

    POST¿¡ ÀÇÇÑ ¹®¼­ÀÇ ¿äû

    % telnet syscon.soongsil.ac.kr 80
    Trying 203.253.15.34 ...
    Connected to syscon.soongsil.ac.kr.
    Escape character is '^]'.
    POST /~artech/cgi-bin/wguest.cgi HTTP/1.0
    content-length: 45
    
    realname=JaeGeun&comments=No+Comments
    
    HTTP/1.0 301 Moved
    Location: /~artech/cgi-bin/rguest.cgi
    
    Connection closed by foreign host.
    

    À§ÀÇ ¿¹¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ HTTP´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î µ¿ÀÛÇÑ´Ù.

    DNS->IP		% tn comp.mailx2.com 80
    		Trying 210.206.89.230...
    IP ÀÌ¿ë Á¢¼Ó	Connected to comp.mailx2.com.
    		Escape character is '^]'.
    HTTP ¿äû	GET /~artech/cgi-bin/rguest.cgi?key=±è HTTP/1.0
    
    HTTP ÀÀ´ä	HTTP/1.0 200 OK
    		Content-type: text/html
    		Last-modified: Saturday, 07-Mar-98 04:33:36 GMT
    		Content-length: 947
    
    		<html>
    		...
    		<html>
    Á¢¼ÓÇØÁ¦	Connection closed by foreign host
    

    Ŭ¶óÀ̾ðÆ®´Â TCP/IP¸¦ ÅëÇØ DNS¸¦ IP·Î º¯È¯ÇÑ´Ù. ÀÌ·¸°Ô º¯È¯µÈ IP¸¦ ÀÌ¿ëÇؼ­ ¿ø°ÝÈ£½ºÆ®¿¡ Á¢¼ÓÇÏ°í, HTTP¸¦ ÅëÇØ ¹®¼­¸¦ ¿äûÇÑ´Ù. ¼­¹ö´Â ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ Å¬¶óÀ̾ðÆ®°¡ ¿äûÇÑ ¹®¼­¸¦ Àоî HTTP¸¦ ÅëÇØ Å¬¶óÀ̾ðÆ®¿¡ Àü¼ÛÇÑ´Ù. Àü¼ÛÀÌ ³¡³ª¸é ¼­¹ö´Â TCP/IP Á¢¼ÓÀ» Á¾·áÇϰԵȴÙ.

    Áï, HTTP´Â Á¢¼Ó, ¿äû, ÀÀ´ä, Á¢¼ÓÇØÁ¦ÀÇ ³× ´Ü°è·Î ÁøÇàµÈ´Ù. CGIÀÇ µ¿ÀÛ

    CGIµµ À¥»ó¿¡¼­ HTTP¸¦ ÅëÇØ µ¿ÀÛÇϹǷΠHTTP¿Í µ¿ÀÏÇÑ ÀýÂ÷¿¡ µû¶ó µ¿ÀÛÇÑ´Ù. ´Ù¸¸ ÇÑ°¡Áö Â÷ÀÌ´Â ÀϹÝÀûÀÎ ¹®¼­ÀÇ °æ¿ì¿¡´Â ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ¹®¼­¸¦ Àоî Àü¼ÛÇÏÁö¸¸ CGIÀÇ °æ¿ì¿¡´Â ÆÄÀÏÀÌ ¾Æ´Ï¶ó CGI¸¦ ½ÇÇàÇÑ °á°ú¸¦ Ŭ¶óÀ̾ðÆ®¿¡ Àü¼Û ÇÑ´Ù´Â Á¡ÀÌ´Ù.

    TCP/IP		DNS¸¦ IP·Î º¯È¯(Lookup Host)
    TCP/IP		IP¸¦ ÀÌ¿ëÇؼ­ Á¢¼Ó(Contacting Host)
    HTTP		HTTP ¸í¼¼¿¡ µû¶ó ¹®¼­¿äû(Request Message)
    Server		¼­¹öÀÇ »óŸ¦ ȯ°æº¯¼ö·Î ÀúÀåÇÏ°í CGI È£Ãâ
    CGI		ȯ°æ º¯¼ö¸¦ ÀÌ¿ë, Àû´çÇÑ Ã³¸®¸¦ ÇÑ ÈÄ, °á°ú¸¦ ¼­¹ö¿¡ Àü´Þ
    Server		CGI Ãâ·Â¿¡ Çì´õ¸¦ ´õÇØ ÀÀ´ä ¸Þ½ÃÁö ±¸¼º
    HTTP		HTTP ¸í¼¼¿¡ µû¶ó ÀÀ´ä(Replay Message)
    TCP/IP		Á¢¼ÓÇØÁ¦
    

    ÀϹÝÀûÀÎ °æ¿ì À¥»ó¿¡¼­ÀÇ ¿äûÀº ÇÏÀÌÆÛ¸µÅ©(Hyper Link)¸¦ ÅëÇؼ­ ÀÌ·ç¾îÁöÁö¸¸ CGIÀÇ ¿äûÀº ÁÖ·Î Form ű׳ª Isindex ű׸¦ ÅëÇؼ­ ÀÌ·ç¾îÁø´Ù. ¶ÇÇÑ º¸ÅëÀÇ ¿äûÀÏ °æ¿ì¿¡´Â À¥ ¼­¹ö´Â °ð¹Ù·Î ¿äûÇÑ ¹®¼­¸¦ ÆÄÀÏ ½Ã½ºÅÛÀ¸·ÎºÎÅÍ ÀоîµéÀÎ ´ÙÀ½ Ŭ¶óÀ̾ðÆ® ÃøÀ¸·Î Àü´ÞÇÏ°Ô µÈ´Ù. ±×·¯³ª ¿äûµÈ URLÀÌ CGI ÇÁ·Î±×·¥ÀÏ °æ¿ì´Â ±× CGI ÇÁ·Î±×·¥À» È£ÃâÇؼ­ CGI ÇÁ·Î±×·¥ÀÌ µ¿ÀûÀ¸·Î »ý¼ºÇÏ´Â ¹®¼­¸¦ Ŭ¶óÀ̾ðÆ® ÃøÀ¸·Î Àü´ÞÇÏ°Ô µÈ´Ù.

    »ç¿ëÀÚ°¡ Form ű×ÀÇ Á¦Ãâ(Submit) ¹öÆ°À» Ŭ¸¯Çϸé Ŭ¶óÀ̾ðÆ®´Â ÇöÀçÀÇ ½Ã°£, ³¯Â¥¿Í °°Àº ½Ã½ºÅÛ Á¤º¸¿Í »ç¿ëÀÚÀÇ ID, »ç¿ëÀÚÀÇ µµ¸ÞÀθí°ú °°Àº »ç¿ëÀÚ Á¤º¸¸¦ Æ÷ÇÔÇÑ ¿äû ¸Þ½ÃÁö(Request Message)¸¦ À¥ ¼­¹ö¿¡ Àü¼ÛÇÑ´Ù.

    À¥ ¼­¹ö´Â ¿äûµÈ URLÀÌ ¾î¶² Á¾·ùÀÇ ÆÄÀÏ(SSI, CGI, Perl)Àΰ¡¸¦ ºÐ¼®ÇÑ ÈÄ, CGI ÇÁ·Î±×·¥ÀÏ °æ¿ì ¿äû Çì´õ(Request Header)¿¡ Æ÷ÇÔµÈ »óÅÂÁ¤º¸¸¦ ȯ°æº¯¼ö(QUERY_STRING, CONTENT_LENGTH µîµî)·Î ¼³Á¤ÇÏ°í ³ª¼­ CGI ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°°Ô µÈ´Ù.

    ±×·¯¸é CGI ÇÁ·Î±×·¥Àº ´Ù¸¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇϱâ À§ÇØ ´Ù¸¥ ÇÁ·Î±×·¥À» ´Ù½Ã ¶Ç È£ÃâÇϰųª ¾Æ´Ï¸é Á÷Á¢ 󸮸¦ ÇÑ ´ÙÀ½ »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÙ ¹®¼­¸¦ Ç¥ÁØ Ãâ·ÂÀ¸·Î º¸³»°Ô µÈ´Ù. ±×·¯¸é ÀÌ°ÍÀ» ¹ÞÀº ¼­¹ö´Â ´Ù½Ã Ŭ¶óÀ̾ðÆ® ÃøÀ¸·Î ³×Æ®¿öÅ©¸¦ ÅëÇØ °á°ú¸¦ Àü¼ÛÇÏ°Ô µÈ´Ù. µû¶ó¼­ ¾î¶² CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´À³Ä¿¡ µû¶ó¼­ ´Ù¾çÇÑ ¼­ºñ½º¸¦ Á¦°øÇÒ ¼ö ÀÖ´Ù.

    CGIÀÇ µ¿ÀÛ¿ø¸®
    CGI ÇÁ·Î±×·¥

    CGI´Â ÀԷ°ú Ãâ·ÂÀ» Á¤ÀÇÇÑ °ÔÀÌÆ®¿þÀÌÀÇ Ç¥ÁؾÈÀ̸ç, ÀÌ Ç¥Áؾȿ¡ µû¶ó ÀÛ¼ºÇÑ ÇÁ·Î±×·¥ÀÌ CGIÇÁ·Î±×·¥ÀÌ´Ù. µû¶ó¼­ CGI´Â ¾î¶°ÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î·Îµµ ÀÛ¼ºÇÒ ¼ö ÀÖÀ¸¸ç, ½ÉÁö¾î´Â µµ½ºÀÇ ¹èÄ¡ÆÄÀϷεµ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

    ¾î¶°ÇÑ ¾ð¾î¸¦ »ç¿ëÇÒ °ÍÀΰ¡ ÇÏ´Â ¹®Á¦´Â CGI ÇÁ·Î±×·¡¸ÓÀÇ ÃëÇâ¿¡ ´Þ¸° ¹®Á¦ÀÌÁö¸¸ C/C++, Fortranµî°ú °°Àº ÄÄÆÄÀÏ ¾ð¾î´Â CGI ÇÁ·Î±×·¥À» ¼öÇàÇÏ´Â ½Ã°£¸é¿¡¼­ ÀÕÁ¡ÀÌ ÀÖÁö¸¸ ¸Å¹ø ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÀ» ÇؾßÇÑ´Ù´Â Á¡ ¶§¹®¿¡ Perl, Tcl, Shell µî°ú °°Àº ½ºÅ©¸³Æ® ¾ð¾î°¡ CGI ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Ù. CGI ÇÁ·Î±×·¥°ú ÀϹÝÇÁ·Î±×·¥ÀÇ Â÷ÀÌ

    [hello.pl] #! /usr/local/bin/perl print "Hello, World!"; [hello.cgi] #! /usr/local/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>\n"; print "Hello, World!\n"; print "</body></html>";
    hello.cgiÀÇ ½ÇÇ࿹

    hello.cgi

    À§ÀÇ µÎ ÇÁ·Î±×·¥ ¸ðµÎ È­¸é»ó¿¡ "Hello, World!"¶ó´Â ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ±×·¯³ª hello.plÀÌ "Hello, World!"¶ó´Â ¸Þ½ÃÁö¸¸ È­¸é¿¡ Ãâ·ÂÇÏ´Â ¹Ý¸é¿¡ hello.cgi´Â CGI Ç¥ÁØ¿¡µû¶ó "Content-type: text/html\n\n"À» ¸ÕÀú Ãâ·ÂÇÑ´Ù.

    ÀϹÝÀûÀ¸·Î ÀÎÅÍ³Ý Ç¥ÁØÀÎ MIME(Multipurpose Internet Mail Extension)Àº Á¢¹Ì»ç(Suffix ¶Ç´Â È®ÀåÀÚ)¿¡ÀÇÇØ ÆÄÀÏÇü½ÄÀ» ±¸ºÐÇÏ´Â ¹æ¹ýÀÌ´Ù. ±×·¯³ª CGI´Â ÀÓÀÇÀÇ MIME Çü½ÄÀ» Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. ¾Õ¼­ÀÇ ¿¹¿¡¼­ º¸¸é ¹æ¸í·ÏÀÇ °æ¿ì¿¡´Â text/htmlÀ̶ó´Â MIME Çü½ÄÀ» Ãâ·ÂÇÏÁö¸¸ À¥ Ä«¿îÅÍ´Â image/gif ¶ó´Â MIME Çü½ÄÀ» Ãâ·ÂÇÑ´Ù.

    µû¶ó¼­ CGIÀÇ Ãâ·ÂÀº Á¢¹Ì»ç(Suffix ¶Ç´Â È®ÀåÀÚ)¿¡ÀÇÇؼ­´Â ±¸ºÐÇÒ ¼ö ¾øÀ¸¹Ç·Î CGI ¸í¼¼¿¡¼­´Â CGIÀÇ Ã¹ ¹ø° Ãâ·ÂÀº ÇöÀç Ãâ·ÂµÇ´Â ¹®¼­°¡ ¾î¶² Çü½ÄÀÇ ¹®¼­ÀÎÁö¸¦ ºê·Î¿ìÀú°¡ ¾Ë ¼ö ÀÖµµ·Ï Çì´õ Á¤º¸¸¦ Ãâ·ÂÇϵµ·Ï ±ÔÁ¤ÇÏ°í ÀÖ´Ù. Çì´õ Á¤º¸´Â "Content-Type: Main-Type/Sub-Type\n\n"ÀÇ Çü½Ä¿¡ ¹Ýµå½Ã ¸ÂÃß¾î¾ß ÇÑ´Ù.

    Áï, ¸ÕÀú ¹®¼­ Çü½ÄÀ» Ÿ³ª³»´Â Çì´õÁ¤º¸¶ó´Â °ÍÀ» ¾Ë·ÁÁÖ´Â "Content-Type:"¿¡ ¹®¼­ÀÇ Çü½ÄÀ» "Main-Type/Sub-Type"ÀÇ ÇüÅ·ΠÃâ·ÂÇÏ°í Çì´õ¿Í Body¸¦ ±¸ºÐÇϱâÀ§ÇØ °ø¹é ¶óÀÎÀ» Çϳª Ãß°¡ÇØ¾ß ÇÑ´Ù.

    ÀÌ Çü½Ä¿¡ ¸ÂÁö ¾ÊÀº °æ¿ì, ¼­¹ö´Â º¸Åë "Document contains no data"³ª "500 Internal Server Error"¶ó´Â ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°Ô µÈ´Ù. Content-TypeÀº ÀÏ¹Ý ÅؽºÆ® ÆÄÀÏÀÏ °æ¿ì´Â "text/plain", HTML ¹®¼­ÀÏ °æ¿ì´Â "text/html", JPEG À̹ÌÁöÀÏ °æ¿ì´Â "images/jpeg"µîÀÌ °¡´ÉÇÏ¸ç °¢°¢ÀÇ ÆÄÀÏ¿¡ µû¶ó¼­ MIME À¯ÇüÀÌ Á¤ÀǵǾî ÀÖ´Ù.

    µû¶ó¼­ HTML ¹®¼­·Î ÀνÄÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­´Â ¹®¼­ÀÇ º» ³»¿ëÀÌ Ãâ·ÂµÇ±â Àü¿¡ "Content-Type: text/html\n\n"À̶õ Çì´õ¸¦ ¹Ýµå½Ã Ãâ·ÂÇؾ߸¸ ÇÑ´Ù.

    µÎ¹ø°·Î ¹®¼­¸¦ Content-Type¿¡ ¸Â°Ô Ãâ·ÂÇؾ߸¸ ÇÑ´Ù. À§ÀÇ ¿¹¿¡¼­´Â Content-TypeÀÌ text/htmlÀ̹ǷΠ"Hello, World!"ÀÇ ¾ÕµÚ·Î "<html><body>", "</body></html>"¸¦ Ãß°¡Çß´Ù. CGI ÇÁ·Î±×·¥ÀÇ ½ÇÇà ¸í·ÉÇà¿¡¼­ CGI ÇÁ·Î±×·¥ÀÇ ½ÇÇà

    CGI ÀÛ¼º½Ã ÇÑ°¡Áö ÁÖÀÇÇÒ Á¡Àº CGI ÇÁ·Î±×·¥ ¿ª½Ã ½ÇÇà ÇÁ·Î±×·¥À̶ó´Â Á¡ÀÌ´Ù. ÀÏ¹Ý ÇÁ·Î±×·¥°úÀÇ Â÷ÀÌÁ¡Àº ÀÏ¹Ý ÇÁ·Î±×·¥Àº ÁÖ·Î ¸í·ÉÇà¿¡¼­ ½ÇÇàµÇ´Â ¹Ý¸é CGI ÇÁ·Î±×·¥Àº ÁÖ·Î Web¿¡¼­ ½ÇÇàµÈ´Ù´Â °ÍÀÌ´Ù. CGI ÇÁ·Î±×·¥µµ ½ÇÇà ÇÁ·Î±×·¥À̹ǷΠ¹Ýµå½Ã ¸í·ÉÇà¿¡¼­ ¸ÕÀú ½ÇÇàÇÑ ÈÄ À¥ »ó¿¡¼­ ½ÇÇàÇØ¾ß ÇÑ´Ù.

    À§ÀÇ ¿¹´Â Perl Script·Î ÀÛ¼ºµÆÀ¸¹Ç·Î hello.cgi¸¦ ½ÇÇàÆÄÀÏ·Î ¸¸µé±âÀ§Çؼ­´Â ´ÙÀ½°ú °°Àº ¸í·ÉÀ¸·Î ½ÇÇà±ÇÇÑÀ» ÁÖ¾î¾ß ÇÑ´Ù.

    % chmod 755 cgi_program
    % cgi_program
    
    À¥»ó¿¡¼­ ½ÇÇà

    ¸í¸íÇà¿¡¼­ CGI°¡ Á¤»óÀûÀ¸·Î ¼öÇàµÇ¾úÀ¸¸é Ŭ¶óÀ̾ðÆ®ÀÇ À§Ä¡(Location)»óÀÚ¿¡ CGIÀÇ URLÀ» Á÷Á¢ÀÔ·ÂÇÔÀ¸·Î¼­ CGI¸¦ ½ÇÇà½Ãų ¼ö ÀÖ´Ù. Áï,

    http://ix.bit.co.kr/~artech/cgi-bin/hello.cgi
    
    À§ÀÇ ¸í·ÉÀ» ¼öÇàÇؼ­ "Hello World!"¶ó´Â ¸Þ½ÃÁö°¡ Ãâ·ÂµÇ¸é CGI´Â Á¤»óÀûÀ¸·Î ¼öÇàµÈ °ÍÀÌ´Ù. À¥°ú ½Ã½ºÅÛÀÇ µð·ºÅ丮 ±¸Á¶

    ´ÙÀ½ ±×¸²Àº Unix ½Ã½ºÅÛ °æ·Î¿Í URL »çÀÌÀÇ °ü°è¸¦ ³ªÅ¸³½ °ÍÀÌ´Ù. °ýÈ£·Î Ç¥½ÃµÈ °ÍÀº ÇØ´ç URL¿¡´ëÇÑ ½Ã½ºÅÛ °æ·ÎÀ̸ç, ȸ»öÀ¸·Î Ç¥½ÃÇÑ µð·ºÅ丮ÀÇ ÇÏÀ§ µð·ºÅ丮¸¸ À¥¿¡¼­ Á¢±Ù °¡´ÉÇÏ´Ù. À¥°ú ½Ã½ºÅÛÀÇ µð·ºÅ丮 ±¸Á¶

    ¶ÇÇÑ (Server)·Î Ç¥½ÃÇÑ µð·ºÅ丮´Â À¥¼­¹ö ¼³Á¤¿¡ÀÇÇØ Á¢±Ù °¡´ÉÇÑ µð·ºÅ丮ÀÌ´Ù. CGI ÀÛ¼º½Ã À¯ÀÇ »çÇ×

    ´ÙÀ½Àº CGI ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ À¯ÀÇÇÒ »çÇ×ÀÌ´Ù. CGI ÇÁ·Î±×·¥¿¡¼­ 500 Internal Server Error°¡ ¹ß»ýÇÏ´Â ÀÌÀ¯´Â ´ÙÀ½ ÁÖÀÇ »çÇ×À» ÁöÅ°Áö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù. ¹Ýµå½Ã ´ÙÀ½ À¯ÀÇ »çÇ×À» ¼÷ÁöÇÏ°í ²À ÁöÄÑÁֱ⠹ٶõ´Ù.

    • È®ÀåÀÚ CGIÀÇ È®ÀåÀÚ´Â °¡±ÞÀû .cgi·Î ÇÑ´Ù. ¼­¹öÀÇ ¼³Á¤¿¡ µû¶ó È®ÀåÀÚ°¡ .cgi°¡ ¾Æ´Ñ°æ¿ì¿¡´Â CGI°¡ ½ÇÇàµÇÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù.
    • µð·ºÅ丮 CGI´Â °¡±ÞÀû cgi-bin µð·ºÅ丮¿¡¼­ ±âµ¿ÇÑ´Ù. ´ëºÎºÐÀÇ À¥¼­¹öÀÇ ¼³Á¤ÀÌ cgi-bin µð·ºÅ丮¿¡¼­¸¸ CGI ½ÇÇàÀÌ °¡´ÉÇϵµ·Ï µÇ¾î ÀÖ´Ù.
    • ÆÛ¹Ì¼Ç CGI ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â Áß¿¡ °¡Àå ºó¹øÇÏ°Ô ¹ß»ýÇÏ´Â ¹®Á¦´Â ÆÛ¹Ì¼Ç ¹®Á¦ÀÌ´Ù. ¹Ýµå½Ã ´ÙÀ½ »çÇ׿¡ µû¶ó Æ۹̼ÇÀ» È®ÀÎÇÑ ÈÄ CGI¸¦ ½ÇÇàÇϱ⠹ٶõ´Ù.
      CGI ÇÁ·Î±×·¥: 755		chmod 755 guest.cgi
      µ¥ÀÌÅÍÆÄÀÏ: 666			chmod 666 guest.dat
      Àбâ/¾²±â¿ë µð·ºÅ丮: 777	chmod 777 upload
      
    • Unix ¸í·ÉÇà¿¡¼­ ½ÇÇà ¸í·ÉÇà¿¡¼­ CGI¸¦ ½ÇÇàÇÏ°í CGIÀÇ Ãâ·ÂÀÌ ´ÙÀ½°ú °°Àº Çü½ÄÀΰ¡ ²À È®ÀÎÇÑ´Ù.
      ¸í·ÉÇà:  > ctype.cgi 
      Çì  ´õ:  Content-type: text/html
      ºó  ÁÙ:  
      º»  ¹®:  <html>
      º»  ¹®:  <body>
      º»  ¹®:  ...
      º»  ¹®:  </body>
      º»  ¹®:  </html>
      
    • Web¿¡¼­ ½ÇÇà
      http://ix.bit.co.kr/~artech/cgi-bin/guest.cgi
      


´ÙÀ½±Û: Part I - Introduction to CGI (18627)1996-03-01
ÀÌÀü±Û: CGI::FastTemplate (56449)2002-02-05

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.