2016년 5월 23일 월요일

JSP 쿠키(cookie) 설정에 한글을 사용할 경우 발생하는 에러 : Control character in cookie value or attribute





java.lang.IllegalArgumentException: Control character in cookie value or attribute.

위 에러는 JSP의 쿠키(cookie) 설정에 한글을 사용할 경우 발생하는 에러이다.
다음과 같은 JSP 코드가 있다고 가정하자.

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>쿠키 설정</title>
</head>
<body>
<%
Cookie c = new Cookie("MemberID", "12345");
c.setMaxAge(60*60);
c.setComment("회원 ID");
response.addCookie(c);
%>
<p/>
<a href="GetCookie.jsp">쿠키 확인하기</a>
</body>
</html>

위 코드를 실행하면 

JSP java.lang.IllegalArgumentException: Control character in cookie value or attribute.라는 에러가 발생한다.
에러가 발생하는 위치는 한글을 사용한 
c.setComment("회원 ID")에서 에러가 발생한다.

해결할려면 한글을 utf-8로 인코딩한 값을 set하거나 Base64로 인코딩한 값을 set하면 된다. 
물론 쿠키를 받는 곳에서 동일한 인코딩 값으로 받아야 할 것이다.

댓글 없음:

댓글 쓰기