您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
03-Cookie原理&细节(cookie持久化与有效期及中文cookie值的设置)
发布时间:2024-12-05 19:00:06编辑:雪饮阅读()
-
设置cookie是在响应头中set-cookie为key,例如响应头可以是这样的
set-cookie: username=kasumi
而获取cookie时候则是从请求头里面的cookie字段来获取的,请求会携带该请求所在会话的cookie。
例如请求头可以像是这样
Cookie:JSESSIONID=B440C6698101F9EE3431E1BD21D04CF6; username=kasumi
默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则cookie被销毁。
setMaxAge(int seconds)设置cookie存活时间,值可以是正数,负数,零
正数:则将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间后自动删除。
(这里我在想的是不同浏览器肯定不共享,比如在a浏览器的持久化存在,那么到b浏览器中就不一定能够获得该cookie)
负数:也是默认值,cookie存储在当前浏览器内存中,当浏览器关闭,则Cookie被销毁。
零:删除对应Cookie。
例如将cookie设置为一个星期后再销毁
cookie.setMaxAge(60*60*24*7);
cookie不能设置为中文的值,至少java这边是这样的,例如
Cookie cookie=new Cookie("kasumi","藤岛.霞");
这样会报错如:HTTP Status 500 - Control character in cookie value or attribute.
但是你可以设置的时候进行编码
Cookie cookie=new Cookie("kasumi", URLEncoder.encode("藤岛.霞"));
resp.addCookie(cookie);
获取的时候进行解码
Cookie[] cookies=req.getCookies();
for(Cookie cookieItem:cookies){
String cookieValue=cookieItem.getValue();
String cookieName=cookieItem.getName();
if(cookieName.equals("kasumi")){
cookieValue= URLDecoder.decode(cookieValue);
}
System.out.println("cookie name:"+cookieName+",cookie value:"+cookieValue);
}
关键字词:cookie,持久,有效,期,中文
上一篇:02-Cookie-基本使用
下一篇:04-Session-基本使用