본문 바로가기

Microsoft/ASP.NET

쿠키란 무엇인가? (1)

쿠키란 무엇인가?

쿠키는 웹 서버와 브라우저 간을 이동하는 요청 및 페이지에 포함된 소규모 텍스트 비트

쿠키에는 사용자가 사이트를 방문할 때마다 웹 응용 프로그램에서 읽을 수 있는 정보 포함

사용자가 재 방문 시 URL을 입력하면 로컬 하드 디스크에서 URL 관련 쿠키를 찾음

-> 쿠키 존재 : 페이지 요청과 함게 해당 쿠키를 서버로 전달

 

쿠키는 특정 페이지가 아닌 웹 사이트와 관계되므로 요청 페이지와 상관없이 쿠키 정보를 교환

사용자가 여러 사이트를 방문하면 각 사이트에서 사용자 브라우저에 쿠키를 저장함

 

쿠키는 다양한 용도로 사용된다 예를 들어 다음과 같이 사용한다.

- 투표 사이트에 사용자가 두 번 투표할 수 없도록 쿠키를 부울 값을 이용하여 선거 참여 유무 확인

- 사용자가 로그인해야하는 사이트에서는 쿠키를 사용하여 해당 사용자가 이미 로그인했음을 나타낼 수 있음

- 사용자가 나중에 웹 사이트를 방문하면 이전에 저장한 정보를 가져올 수 있다.

 

쿠키 제한 사항

대부분의 브라우저에서는 4096Byte 지원(최신 브라우저는 8192Byte 지원)

크기 제한이 있기 때문에 쿠키는 적은 양의 데이터 또는 사용자 ID 같은 식별자를 저장하는데 적합

대부분의 브라우저에서는 각 사이트마다 20개의 쿠키 허용 20개 이상이 저장되는 경우 가장 오래된 쿠키가 지워짐

일부 브라우저에서는 최대 쿠키의 갯수를 300개로 제한함

 

사용자가 브라우저에서 쿠키를 거부하도록 설정하여 쿠키 사용을 제한할 수 있음

 

쿠키 작성

쿠키는 이름 별로 저장되어지므로 두 개의 쿠키에 같은 이름을 지정하면 하나를 덮어씀

쿠키는 Name - Value로 구성되어 있음

쿠키의 만료 날짜 및 시간을 설정할 수 있으며 만료된 쿠키는 사용자가 쿠키를 작성한 사이트를 방문할때 브라우저에서 삭제되어짐

쿠키가 만료되지 않게 하려면 만료 날짜를 50년 이후로 설정하면됨

(사용자가 쿠키를 지울 수 있음!!!)

쿠키 만료를 설정하지 않으면 쿠키가 만들어지지만 하드 디스크에 저장되지 않으며 사용자 세션 정보의 일부로 유지 관리됨

(브라우저를 닫으면 쿠키가 삭제되어짐)

 

ex 1)

Response.Cookies["userName"].Value = "patrick"

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

 

ex 2)

HttpCookie aCookie = new HttpCookie("lastVisit");

aCookie.Value = DatTime.Now.ToString();

aCookie.Expires = DateTime.Now.AddDays(1);

REsponse.Cookies.Add(aCookie); 

 

쿠키 하나에 여러 개의 하위 키를 저장할 수도 있음

(이중 배열을 통한 분류라고 보면 됨)

ex 1)

Response.Cookies["userInfo"]["userName"] = "patrick"

Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();

Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

 

ex 2)

HttpCookie aCookie = new HttpCookie("userInfo");

aCookie.Values["userName"] = "patrick";

aCookie.Values["lastVisit"] = DateTime.Now.ToString();

aCookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(aCookie);

 

쿠키 범위 제어

사이트의 모든 페이지는 해당 사이트에 대한 모든 쿠키를 가져온다.

쿠키 범위를 설정하기 위해서는 서버 폴더 별, 도메인 별 설정이 가능하다.

- 폴더 범위 제한 : 쿠키를 사이트의 응용 프로그램으로 제한 가능

- 도메인 별 범위 제한 : 쿠키에 액세스 할 수 있는 하위 도메인을 지정할 수 있음

 

쿠키를 폴더 별로 제안하려면 쿠키의 Path 속성을 설정한다. 

HttpCookie appCookie = new HttpCookie("AppCookie");

appCookie.Value = "written " + DateTime.Now.ToString();

appCookie.Expires = DateTime.Now.AddDays(1);

appCookie.Path = "/Application1";

Response.Cookies.Add(appCookie);

도메인이 www.contoso.com인 경우 위의 예제에서 만든 쿠키는 http://www.contoso.com/Application1경로의 페이지와 해당 폴더 아래에 있는 모든 페이지에서 사용할 수 있으나 http://www.contoso.com 이나 http://www.contoso.com/Application2와  같은 페이지에서는 쿠키를 사용할 수 없음

 

쿠키를 도메인 별로 제한하려면 쿠키의 Domain 속성을 설정합니다.

ex 1)

Response.Cookies["domain"].Value = DateTime.Now.ToString();

Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1)

Response.Cookies["domain"].Domain = "support.microsoft.com"

 

ex 2)

Response.Cookies["domain"].Value = DateTime.Now.ToString();

Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1)

Response.Cookies["domain"].Domain = "contoso.com"

ex 1)의 경우 support.microsoft.com의 도메인에서만 유효한 Cookie가 생성된다.

ex 2)의 경우 sales.contoso.com, support.contoso.com뿐만 아니라 주 도메인에서도 쿠키를 사용할 수 있다.

'Microsoft > ASP.NET' 카테고리의 다른 글

ASP.Net Redirect  (0) 2015.11.20
ASP C# String 처리  (0) 2015.11.20
쿠키 읽기  (0) 2015.11.07
Post, Get 방식의 이해  (0) 2015.10.26
PostBack  (0) 2015.10.25