쿠키란 무엇인가?
쿠키는 웹 서버와 브라우저 간을 이동하는 요청 및 페이지에 포함된 소규모 텍스트 비트
쿠키에는 사용자가 사이트를 방문할 때마다 웹 응용 프로그램에서 읽을 수 있는 정보 포함
사용자가 재 방문 시 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 |