반응형
Tomcat Control character in cookie value or attribute. 원인 및 해결방법
원인 : 쿠키에 한글 저장 시 인코딩을 하지 않았을 경우 발생.
해결방법 : 쿠키에 한글 저장 시 인코딩 설정, 불러올 때 디코딩 설정
escape. unescape 를 활용하면 해결 할 수 있습니다.
저장 시 escape(id값); 을 사용하여 인코딩 후 저장하고,
불러올 시 unescape(id값)을 사용하여 디코딩 합니다.
Sample Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 |
/**쿠키를 저장한다
* cNm : 쿠키명
* cVal : 쿠키값
* cDay : 쿠키저장 기간, 없을 시 기본 30일
* **/
setCookie : function(cNm, cVal, cDay){
var expire = new Date();
cDay = (cDay==undefined) ? 30 : cDay;
expire.setDate(expire.getDate()+cDay);
var cookies = cNm+'='+escape(cVal)+'; path=/;';
if (typeof cDay =='number'){
cookies+='expires='+expire.toGMTString()+';';
}
document.cookie = cookies;
},
/** 쿠키명으로 쿠키 값을 가져온다.**/
getCookie : function(cNm){
cNm = cNm + '=';
var cookieData = document.cookie;
//indexOf : 배열의 앞에서 부터 검색
//lastIndexOf : 배열의 뒤에서 부터 검색
//값이 있다면 해당 인자의 index를 리턴, 없다면 -1을 리턴
var start = cookieData.indexOf(cNm);
var cookieValue = '';
if(start != -1){
start += cNm.length;
var end = cookieData.indexOf(';', start);
if(end == -1)end = cookieData.length;
cookieValue = cookieData.substring(start, end);
}
return unescape(cookieValue);
}, |
cs |
반응형
댓글