cookie的陷阱
?
问题简述final Cookie c = new Cookie(cookie.getName(), null);c.setMaxAge(0);inv.getResponse().addCookie(c);
?问题来了,此cookie根本没有被删除,也就是说注销根本不起作用。
直接原因删除的时候没有设置path,默认的path跟当前的uri有关,也就是说如果注销的uri为“xxx/user/logout”,那么就设置cookie的path为“xxx/user”,而对cookie来说,name不是它的唯一标识,还包括domain和path,直接原因是删除的时候没有显示的指定path为“/”。
扩展阅读Path的可见性
同一个domain下,当前请求只能读取到其uri的所有父类uri的cookie,“读取到”是什么概念呢,在servlet中就是说从request取出来的cookies存在你想要的cookie。比如path为“/”,那么所有domain下的uri都能读取到,如果path为“/lib”,那么只有“/lib/…”下面的uri能够读取到,如果path为“/lib/user”,那么uri为“/lib”的请求从request里取出来的cookie就不包含path为“/lib/user”的cookie,这就是path的可见性。
从cookie中只能取出key/value
在调试的时候,我发现从request里取出来的cookie只有key和value,其他诸如domain和maxage等信息都丢失了,不是很明白其中的缘由,做个记录,如有高人路过指点就再好不过了。
?
1 楼 greatwqs 2011-08-20 说的明白一些你这个就是sso基于cookie的单点登录一种实现.