问题描述:在低版本tomcat(8.5以下)中,cookie写入中文时引发Control character in cookie value or attribute异常
原因:cookie中存在中文或特殊符号造成编码不一致,低版本tomcat不支持。
解决方案:转换编码。写入cookie时先将值转换成utf8编码,读取时先将值转换成ASCII码
例js:
/**
* 设置cookie
* @param key - key 键
* @param value - value 键
* @param expireDayNum - cookie有效天数
*/
function setCookie(key, value, expireDayNum) {
var today = new Date();
var expireDay = new Date();
var ms = 24 * 60 * 60 * 1000 * expireDayNum;
expireDay.setTime(today.getTime() + ms);
document.cookie = key + "=" + encodeURIComponent(value) + ";expires=" + expireDay.toGMTString();
}
/**
* 获取cookie
*/
function getCookie(key) {
var search = key + "=";
begin = document.cookie.indexOf(search);
if (begin != -1) {
begin += search.length;
end = document.cookie.indexOf(";", begin);
if (end == -1)
end = document.cookie.length;
return decodeURIComponent(document.cookie.substring(begin, end));
}
}
/**
* 删除cookie
*/
function delCookie(key) {
var today = new Date();
document.cookie = key + "=;expires=" + today.toGMTString;
}