Programing/JavaScript

Tomcat Control character in cookie value or attribute. 원인 및 해결방법

리커니 2018. 3. 9.
반응형

 

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

 

 

반응형

댓글

💲 추천 글