ÄíÅ°´Â »óÅÂÁ¤º¸¸¦ ÀúÀåÇÒ ¼ö ¾ø´Â À¥ ¼ºñ½º¿¡¼ »óÅÂÁ¤º¸¸¦ ÀúÀåÇϱâÀ§ÇØ °³¹ßµÈ ±â¹ýÀ¸·Î CGI¿Í °°Àº ¼¹öÂÊ ÀÎÅÍÆäÀ̽º¿¡¼ Ŭ¶óÀ̾ðÆ®¿¡ »óÅÂÁ¤º¸¸¦ ÀúÀå(cookies.txt)ÇÏ°í ÃßÃâÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛÀÌ´Ù.
µ¿ÀÛ¿ø¸®
- 1. Request
- Ŭ¶óÀ̾ðÆ®°¡ ¼¹öÃø¿¡ ¹®¼¿äûÀ» ÇÑ´Ù.
- 2. Call
- ¼¹ö´Â Cookie¸¦ °Ë»çÇϱâÀ§ÇØ CGI¸¦ È£ÃâÇÑ´Ù.
- 3. Set
- Cookie°¡ ¾ø´Â °æ¿ì¿¡ CGI´Â Set-Cookie Çì´õ¸¦ Æ÷ÇÔÇÑ Ãâ·ÂÀ» ¼¹ö¿¡ ¸®ÅÏÇÑ´Ù.
- 4. SetCookie
- Set-Cookie Çì´õ¿¡ ºÎ°¡ Çì´õ¸¦ µ¡ºÙ¿© Body ÇÔ²² Ŭ¶óÀ̾ðÆ®¿¡ Àü¼ÛÇÑ´Ù.
- 5. Save
- Set-Cookie Çì´õ¸¦ ¹ÞÀ» Ŭ¶óÀ̾ðÆ®´Â Cookie Á¤º¸(Name=Value, Expires Date, Path, Domain)¸¦ Cookies.txt¶ó´Â ÆÄÀÏ¿¡ ÀúÀåÇÑ´Ù.
- 6. Read, 7. Send Cookie
- Cookies.txt¿¡ µî·ÏµÈ µ¿ÀÏÇÑ DomainÀÇ µ¿ÀÏÇÑ Path¸¦ »ç¿ëÀÚ°¡ ¿äûÇÏ´Â °æ¿ì Ŭ¶óÀ̾ðÆ®´Â Cookie Á¤º¸¸¦ Cookie: Çì´õ¸¦ ÀÌ¿ëÇؼ ¼¹ö·Î Àü¼ÛÇÑ´Ù.
- 8. Call
- ¼¹ö´Â Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¹ÞÀº Cookie Á¤º¸¸¦ ȯ°æº¯¼ö(HTTP_COOKIE)¿¡ ÀúÀåÇÏ°í CGI¸¦ È£ÃâÇÑ´Ù.
- 9. HTTP_COOKIE
- CGI´Â HTTP_COOKIE·ÎºÎÅÍ Cookie Á¤º¸¸¦ º¹¿øÇؼ ¼¹ö·Î Àü¼ÛÇÑ´Ù.
È°¿ë¹üÀ§
¼îÇιé
¹éÈÁ¡°ú °°Àº °¡»ó Mall¿¡¼ »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ ¹°Ç°Á¤º¸¸¦ ÀúÀå.
ÁúÀÇÁ¤º¸ ÀúÀå
°Ë»ö¿£Áø¿¡¼ »ç¿ëÀÚÀÇ ÁúÀǸ¦ Cookie¿¡ ÀúÀåÇÑ ÈÄ, Á¢¼Ó½Ã ÀÌÀü ÁúÀǾ Ãâ·Â.
¿¹: <A HREF="http://search.microsoft.com/">Microsoft»çÀÇ °Ë»ö¿£Áø</A> <a href='http://search.microsoft.com/' target='_blank' style='border-bottom: none'><IMG src='/images/external.png' align='middle' border=0 style='border-bottom: 0'></a>
ȯ°æÁ¤º¸ ÀúÀå
»ç¿ëÀÚ°¡ ¼³Á¤ÇÑ È¯°æÁ¤º¸¸¦ ÀúÀåÇÏ°í ÇØ´ç»ç¿ëÀÚ°¡ ´Ù½Ã Á¢¼ÓÇÒ ¶§ »ç¿ëÀÚ Á¤º¸¸¦ º¹¿ø
¿¹: <A HREF="http://ftpsearch.ntnu.no">FTP Search</A> <a href='http://ftpsearch.ntnu.no' target='_blank' style='border-bottom: none'><IMG src='/images/external.png' align='middle' border=0 style='border-bottom: 0'></a>
CookieÀÇ »ç¿ëÇü½Ä
CookieÀÇ ¼³Á¤(¼¹ö)
Set-Cookie Çì´õÀÇ °¢ Çʵå´Â ;·Î ±¸ºÐµÇ¸ç Name=Value¸¦ Á¦¿ÜÇÑ ³ª¸ÓÁö Çʵå´Â »ý·«ÇÒ ¼ö ÀÖ´Ù.
Set-Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN_NAME; secure
- NAME=VALUE
- Ŭ¶óÀ̾ðÆ®°¡ ¼¹ö¿¡ Àü¼ÛÇϰԵǴ ½ÇÁ¦ÀûÀÎ Á¤º¸·Î Set-Cookie Çì´õ¿¡ ¹Ýµå½Ã Æ÷ÇԵǾî¾ß ÇÑ´Ù. ÀúÀåÇÒ ÄíÅ°ÀÇ À̸§°ú °ªÀ» ¸»Çϸç, Name=Value Çʵå´Â Set-CookieÇì´õ¿¡ ¿ÀÁ÷Çϳª¸¸ Æ÷ÇÔÇؾßÇÑ´Ù. ¼¼¹ÌÄÝ·Ð(;), ½°Ç¥(,), °ø¹é( )À» Á¦¿ÜÇÑ ¾î¶°ÇÑ °Íµµ ÀÔ·ÂÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹®ÀÚµéÀ» ³ªÅ¸³»±â À§Çؼ´Â URL ÀÎÄÚµå ¹æ½Ä°ú °°ÀÌ "%HH"¸¦ ÀÌ¿ëÇصµ µÇ¸ç, ¾î¶°ÇÑ ´Ù¸¥ ÀÎÄÚµù ¹æ¹ýÀ» »ç¿ëÇصµ µÈ´Ù.
- expires=DATE
- ÀúÀåµÈ ÄíÅ°ÀÇ À¯È¿±â°£À» ÁöÁ¤ÇÑ´Ù. ÁöÁ¤µÈ ±â°£ÀÌ Áö³ª¸é ÇØ´ç ÄíÅ°°¡ »ç¶óÁö°Ô µÈ´Ù. ½Ã°£Àº "Wdy, MM-DD-YY HH:MM:SS GMT"¿Í °°Àº Çü½ÄÀ¸·Î ÁöÁ¤ÇÑ´Ù. ¸¸¾à ÁöÁ¤µÇÁö ¾ÊÀ¸¸é Ŭ¶óÀ̾ðÆ®°¡ Á¾·áÇÒ ¶§±îÁö¸¸ À¯È¿Çϸç, Ŭ¶óÀ̾ðÆ®¸¦ Á¾·áÇϸé ÇØ´ç ÄíÅ°´Â »ç¶óÁø´Ù. Ŭ¶óÀ̾ðÆ®¸¦ Á¾·áÇÑ ÈÄ¿¡µµ ÄíÅ°¸¦ ÂüÁ¶ÇϱâÀ§Çؼ´Â ¹Ýµå½Ã expires=Date¸¦ ÁöÁ¤ÇؾßÇÑ´Ù.
- domain=DOMAIN_NAME
- Set-Cookie Çì´õ¸¦ Ãâ·ÂÇÏ´Â ¼¹öÀÇ µµ¸ÞÀÎ ¸íÀ» ÁöÁ¤ÇÑ´Ù. Set-Cookie¸¦ Ãâ·ÂÇÏ´Â CGIÀÇ URI°¡ http://qaos.com/cgi-bin/cookie.cgi¶ó¸é domain=comp.mailx2.comÀÌ ÁöÁ¤µÈ´Ù.
- Ŭ¶óÀ̾ðÆ®´Â ¿äûÇÑ URI°¡ ÁöÁ¤µÈ µµ¸ÞÀÎ ¾È¿¡ ÀÖ¾î¾ß¸¸ ÀúÀåµÈ ÄíÅ°¸¦ ¼¹öÂÊ¿¡ ³Ñ°ÜÁÖ°Ô µÈ´Ù. µµ¸ÞÀÎÀº µÞºÎºÐºÎÅÍ ºÎºÐ¹®ÀÚ¿ °Ë»ö(substring search)À» ÇàÇÏ¿© ÀÏÄ¡µÇ¸é ÁöÁ¤µÈ µµ¸ÞÀξȿ¡ ÀÖ´Â °ÍÀ¸·Î °£ÁֵȴÙ.
- ¶ÇÇÑ ÁöÁ¤µÈ µµ¸ÞÀÎ ¾È¿¡ ÀÖ´Â ¼¹ö¸¸ÀÌ ÄíÅ°¸¦ ´Ù½Ã ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. »óÀ§ 7°¡Áö Ư¼öÇÑ µµ¸ÞÀÎÀº Àû¾îµµ µÎÀÚ¸®, ±× ¿ÜÀÇ µµ¸ÞÀÎÀº Àû¾îµµ ¼¼ÀÚ¸®¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¸¸¾à ÀÌ ¼Ó¼ºÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ±âº»ÀûÀ¸·Î Set-Cookie Çì´õ¸¦ Ãâ·ÂÇÏ´Â ¼¹öÀÇ ÁÖ¼Ò°¡ ÁöÁ¤µÈ´Ù.
- path=PATH
- ³×½ºÄÉÀÙÀÌ ÄíÅ°Á¤º¸ÀÇ Àü´Þ¿©ºÎ¸¦ ÆÇ´ÜÇÏ´Â ±âÁØÀÌ µÇ´Â Çʵå·Î¼ ÀúÀåµÈ ÄíÅ°ÀÇ À¯È¿ÇÑ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à µµ¸ÞÀÎÀÌ À¯È¿ÇÏ´Ù¸é, ´Ù½Ã °æ·Î¸¦ ¾ÕºÎºÐºÎÅÍ ºÎºÐ¹®ÀÚ¿ °Ë»öÇÏ¿© ÀÏÄ¡µÇ¸é ºñ·Î¼Ò ÀúÀåµÈ ÄíÅ°¸¦ ¼¹öÂÊ¿¡ ³Ñ°ÜÁÖ°Ô µÈ´Ù. ¸¸¾à ÀÌ ¼Ó¼ºÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, ±âº»ÀûÀ¸·Î ÄíÅ°¸¦ ÁöÁ¤ÇÏ´Â HTTP ÀÀ´äÇì´õ¿Í °°ÀÌ ³Ñ¾î¿À´Â ¹®¼ÀÇ °æ·Î·Î ÁöÁ¤µÈ´Ù. À§ÀÇ ¿¹¿¡¼´Â /cgi-binÀÌ µÈ´Ù.
- secure
- ¸¸¾à ÀÌ Çʵ带 ÁöÁ¤Çϸé ÄíÅ°¸¦ SSLÀ» ÅëÇؼ¸¸ Àü¼ÛÇÑ´Ù.
CookieÀÇ Àü¼Û
ÁöÁ¤µÈ µµ¸ÞÀÎÀÇ ÁöÁ¤µÈ °æ·ÎÀÇ ¹®¼¸¦ ¿äûÇϸé Ŭ¶óÀ̾ðÆ®´Â ´ÙÀ½°ú °°Àº Cookie Çì´õ¸¦ ¼¹öÃøÀ¸·Î Àü¼ÛÇÔÀ¸·Î¼ Cookie Á¤º¸¸¦ Àü¼ÛÇÑ´Ù.
Cookie: NAME=VALUE
ÀÏÄ¡µÇ´Â Cookie°¡ Çϳª ÀÌ»óÀÏ °æ¿ì¿¡´Â ´ÙÀ½°ú °°Àº Çü½ÄÀÇ Cookie Çì´õ¸¦ Àü¼ÛÇÑ´Ù.
Cookie: NAME1=VALUE1; NAME2=VALUE2
CookieÀÇ º¯°æ, »èÁ¦
»èÁ¦
expires¸¦ Áö³ ½Ã°£À¸·Î ¼³Á¤Çϸé Äí±â´Â »èÁ¦µÈ´Ù.
º¯°æ
°°Àº °æ·ÎÀÇ °°Àº À̸§ÀÇ ´Ù¸¥ °ªÀ» ÁöÁ¤Çϸé Äí±â´Â º¯°æµÈ´Ù.
CookieÀÇ Á¦ÇÑ
- ÀüüÀûÀ¸·Î 300°³ÀÇ ÄíÅ°°¡ ÀúÀåµÉ ¼ö ÀÖ´Ù.
- °¢ ÄíÅ°º°·Î À̸§°ú °ªÀ» ÇÕÇÏ¿© 4 KB±îÁö ÀúÀåµÉ ¼ö ÀÖ´Ù.
- ¼¹ö³ª µµ¸ÞÀκ°·Î 20°³ÀÇ ÄíÅ°°¡ ÀúÀåµÉ ¼ö ÀÖ´Ù.
ÁÖÀÇ»çÇ×
ÇÁ¶ô½Ã ¼¹ö(proxy server)¸¦ ÀÌ¿ëÇÒ °æ¿ì ÄíÅ°°¡ ij½¬µÇ¹Ç·Î ij½¬µÇÁö ¾Êµµ·Ï HTTPÀÇ Pragma General HeaderÀ» no-cache·Î ÇØ¾ß ÇÑ´Ù.
»ç¿ë¿¹
ÀúÀå
Set-Cookie Header »ç¿ë
¿¹) Set-Cookie: name=Jae-Geun&password=1111; Expires=12-31-99
º¯°æ
°°Àº °æ·Î, °°Àº µµ¸ÞÀÎÀ» °®´Â Set-Cooke Header »ç¿ë
¿¹) Set-Cookie: name=Jae-Geun&password=2222; Expires=12-31-99
»èÁ¦
Expire¸¦ °ú°ÅÀÇ ³¯ÀÚ·Î ÁöÁ¤
¿¹) Set-Cookie: name=Jae-Geun&password=1111; Expires=01-01-80
º¹¿ø
$ENV{'HTTP_COOKIE'} ÀÌ¿ë
°£´ÜÇÑ ¿¹
´ÙÀ½Àº ÄíÅ°¸¦ ¼³Á¤, º¹¿ø, º¯°æ, »èÁ¦ÇÏ´Â ¿¹ÀÌ´Ù.
1 : #! /usr/local/bin/perl
2 : require './cgi-lib.pl';
3 :
4 : &ReadParse;
5 :
6 : if($ENV{'HTTP_COOKIE'} ne "") {
7 : &RetriveCookie;
8 : if ($in{command} eq "erase") {
9 : &SetCookie("01-01-80", "ÄíÅ°°¡ »èÁ¦µÇ¾ú½À´Ï´Ù");
10 : }elsif($ENV{'REQUEST_METHOD'} eq 'POST' && $in{command} eq "") {
11 : &SetCookie("12-31-99", "ÄíÅ°°¡ º¯°æµÇ¾ú½À´Ï´Ù");
12 : } else {
13 : print &PrintHeader;
14 : print &HtmlTop;
15 : print &PrintForm;
16 : print &HtmlBot;
17 : }
18 : } elsif($ENV{'HTTP_COOKIE'} eq "" && $ENV{'HTTP_REFERER'} =~/cookie.cgi {
19 : &SetCookie("12-31-99", "ÄíÅ°°¡ ÀúÀåµÇ¾ú½À´Ï´Ù");
20 : }else {
21 : print "Location: /~artech/cookie.html\n\n";
22 : }
23 :
24 : sub RetriveCookie {
25 : $cookie = $ENV{'HTTP_COOKIE'};
26 : @cookie = split(/&/, $cookie);
27 : for(0..$#cookie) {
28 : ($name, $value) = split(/=/, $cookie[$_]);
29 : $cookie{$name} = $value;
30 : }
31 : }
32 :
33 : sub SetCookie {
34 : print "Set-Cookie: name=$in{name}&password=$in{password}&
selected=$in{selected}; expires=$_[0] TZ\n";
35 : print "Pragma: no-cache\n";
36 : print &PrintHeader;
37 : print &HtmlTop("$_[1]");
38 : print "<li> NetscapeÀ» Á¾·áÇÑ ÈÄ, ´Ù½Ã ±âµ¿Çؼ <a href="/~artech
/cookie1.html"> ÀÌÆäÀÌÁö</a>¸¦ ºí·¯¿À¸é ÄíÅ°°¡ ÀúÀå, º¯
°æ, »èÁ¦µÈ °ÍÀ» ¾Ë¼ö ÀÖ½À´Ï´Ù.";
39 : print &HtmlBot;
40 : }
41 :
42 : sub PrintForm {
43 : $value = $cookie{selected};
44 : $cookie{$value} = "selected";
45 : $form =<<Form
46 : <html><head>
47 : <title> Cookie¸¦ ½ÃÇèÇÏ°í ÀÖ½À´Ï´Ù </title>
48 : </head>
49 : <body>
50 : <h2> ´ç½ÅÀÇ ÄíÅ°´Â ´ÙÀ½°ú °°ÀÌ º¹¿øµÇ¾ú½À´Ï´Ù.</h2>
51 : <li> º¯°æÇÏ·Á¸é º¯°æ¹öÆ°À» ´©¸£½Ã¸é µË´Ï´Ù.</li>
52 : <li> »èÁ¦ÇÏ·Á¸é »èÁ¦¸¦ ¼±ÅÃÇÑ ÈÄ, º¯°æ ¹öÆ°À» ´©¸£¸é µË´Ï´Ù.</li>
53 : <form action="/~artech/cgi-bin/cookie.cgi" method="POST">
54 : <table border=3>
55 : <tr>
56 : <th> À̸§ </th>
57 : <th> ºñ¹Ð¹øÈ£ </th>
58 : <th> ¼±Åà </th>
59 :
60 : <th> »èÁ¦ </th>
61 : <th>   </th>
62 : </tr>
63 : <tr>
64 : <td> <input type="text" name="name" value="$cookie{name}"
65 : size=8 maxlength=8> </td>
66 : <td> <input type="password" name="password"
67 : value="$cookie{password}" size=8 maxlenght=8> </td>
68 : <td> <select name="selected">
69 : <option value=apple $cookie{apple}> »ç°ú
70 : <option value=kiwi $cookie{kiwi}> Å°À§
71 : <option value=orange $cookie{orange}> ¿À·£Áö
72 : </select>
73 : </td>
74 : <td> <input type="checkbox" name=command value="erase"> </td>
75 : <td> <input type="submit" name="submit" value="º¯°æ"></td>
76 : </tr>
77 : </table>
78 : </form>
79 : </html>
80 : Form
81 : }
½ÇÇà°á°ú
pcookie.cgi