Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

웹개발

이제 웹 기반 응용개발 지식은 거의 필수적으로 요구되는 시대입니다. 구체적인 웹 사이트 개발은 아니더라도 거시적인 웹 기반 서비스에 대한 지식 배양을 위해 할 것이 참 많네요 ^^

[ASP.NET] ASP.NET에서 다중쿠키 수정시 주의점

작성자 : 박종명
최초 작성일 : 2008-06-25 (수요일)
최종 수정일 : 2008-06-25 (수요일)
조회 수 : 4965

이전에 같이 근무했던 웹 개발자 오용택님의 글입니다.

1. 서론
 
대부분의 브라우저에서는 한 도메인당 사용할 수 있는 쿠키명의 개수가 20개로 제한되어 있기 때문에
부득이하게 많은 개수의 쿠키명을 사용할 수 밖에 없는 경우라면 다중 쿠키를 사용하는 것도 한 방법이 될 수 있다.
 
다중 쿠키를 사용하는 경우, ASP와 ASP.NET에서 다중 쿠키를 다루는 방법이 다소 차이가 있어 이에 대해 정리하고자 한다.
 
일반적으로 ASP에서의 다중 쿠키 사용은 다음과 같다
 
[쿠키 입력]
Response.Cookies("쿠키명").Domain = "mkex.pe.kr"
Response.Cookies("쿠키명")("하위키1") = "값1"
Response.Cookies("쿠키명")("하위키2") = "값2"
 
[쿠키 읽기]
Response.Write(Request.Cookies("쿠키명")("하위키1"))
Response.Write(Request.Cookies("쿠키명")("하위키2"))
 
다중 쿠키로 쿠키 값을 입력하는 경우 헤더에는 다음과 같이 쿠키 정보가 기록된다.
 
Cookie Header : 쿠키명=하위키1=값1&하위키2=값2;...
 
ASP.NET에서도 이와 같은 방식으로 쿠키를 다룰 수 있다.
 
[쿠키 입력]
Response.Cookies["쿠키명"].Domain = "mkex.pe.kr";
Response.Cookies["쿠키명"]["하위키1"] = "값1";
Response.Cookies["쿠키명"]["하위키2"] = "값2";
 
[쿠키 읽기]
Response.Write(Request.Cookies["쿠키명"]["하위키1"]);
Response.Write(Request.Cookies["쿠키명"]["하위키2"]);
 
 
 
2. 문제상황
 
하지만, 다중 쿠키에서 하나의 하위키에 대한 값을 수정하려고 한다면 ASP와 ASP.NET에서 차이점이 발생하게 된다.
 
ASP에서는 다음과 같은 방식으로 간단하게 하위키에 해당하는 값을 수정할 수 있다.
 
Response.Cookies("쿠키명")("하위키1") = "변경된값"
Cookie Header : 쿠키명=하위키1=변경된값&하위키2=값2;...
 
ASP.NET에서 위와 같은 방식으로 수정하고자 하면 다음과 같은 결과가 나타난다.
 
Response.Cookies["쿠키명"]["하위키1"] = "변경된값";
Cookie Header : 쿠키명=하위키1=변경된값;...     //하위키2와 관련된 쿠키 정보 사라짐
 
 
 
기존의 쿠키명에 해당하는 다른 하위키에 대한 쿠키 값이 모두 없어지게 된다.
ASP.NET에서는 쿠키를 NameValueCollection으로 관리하기 때문에 ASP와 같은 형식으로 쿠키를 수정하려고 하면
해당 Collection이 초기화 되어 재설정되기 때문에 기존 설정된 쿠키가 사라지게 되는 것이다.
 
 
3. 해결 방안
 
 
ASP.NET에서는 다음과 같은 방식으로 하위키의 값을 변경하여야 한다.
 
HttpCookie cookie = Request.Cookies["쿠키명"];  //가져올 쿠키명에 해당하는 쿠키 객체를 가져온다.
cookie.Domain = "mkex.pe.kr";
cookie.Values.Set("하위키1","변경된값"); //쿠키 객체의 Collection의 Set 메서드를 이용하여 하위키 값을 변경한다.
Response.Cookies.Set(cookie);               //변경된 쿠키 객체를 다시 Response Cookie Collection에 설정한다.
 
Cookie Header : 쿠키명=하위키1=변경된값&하위키2=값2;... 
 

이름
비밀번호
홈페이지
CA <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요