不同的浏览器采用不同的方式保存Cookie。
IE浏览器会在“C:\Documents and Settings\你的用户名\Cookies”文件夹下以文本文件形式保存,一个文本文件保存一个Cookie。
1.1.2 记录用户访问次数
Java中把Cookie封装成了javax.servlet.http.Cookie类。每个Cookie都是该Cookie类的对象。服务器通过操作Cookie类对象对客户端Cookie进行操作。通过request.getCookie()获取客户端提交的所有Cookie(以Cookie[]数组形式返回),通过response.addCookie(Cookiecookie)向客户端设置Cookie。
Cookie对象使用key-value属性对的形式保存用户状态,一个Cookie对象保存一个属性对,一个request或者response同时使用多个Cookie。因为Cookie类位于包javax.servlet.http.*下面,所以JSP中不需要import该类。
1.1.3 Cookie的不可跨域名性
很多网站都会使用Cookie。例如,Google会向客户端颁发Cookie,Baidu也会向客户端颁发Cookie。那浏览器访问Google会不会也携带上Baidu颁发的Cookie呢?或者Google能不能修改Baidu颁发的Cookie呢?
答案是否定的。Cookie具有不可跨域名性。根据Cookie规范,浏览器访问Google只会携带Google的Cookie,而不会携带Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie。
Cookie在客户端是由浏览器来管理的。浏览器能够保证Google只会操作Google的Cookie而不会操作Baidu的Cookie,从而保证用户的隐私安全。浏览器判断一个网站是否能操作另一个网站Cookie的依据是域名。Google与Baidu的域名不一样,因此Google不能操作Baidu的Cookie。
需要注意的是,虽然网站images.google.com与网站www.google.com同属于Google,但是域名不一样,二者同样不能互相操作彼此的Cookie。
注意:用户登录网站www.google.com之后会发现访问images.google.com时登录信息仍然有效,而普通的Cookie是做不到的。这是因为Google做了特殊处理。本章后面也会对Cookie做类似的处理。
boolean secure
该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false
String path
该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/”
String domain
可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.”
1.1.9 Cookie的域名
Cookie是不可跨域名的。域名www.google.com颁发的Cookie不会被提交到域名www.baidu.com去。这是由Cookie的隐私安全机制决定的。隐私安全机制能够禁止网站非法获取其他网站的Cookie。
正常情况下,同一个一级域名下的两个二级域名如www.helloweenvsfei.com和images.helloweenvsfei.com也不能交互使用Cookie,因为二者的域名并不严格相同。如果想所有helloweenvsfei.com名下的二级域名都可以使用该Cookie,需要设置Cookie的domain参数,例如:
Cookie cookie = new Cookie("time","20080808"); // 新建Cookie
cookie.setDomain(".helloweenvsfei.com"); // 设置域名
cookie.setPath("/"); // 设置路径
cookie.setMaxAge(Integer.MAX_VALUE); // 设置有效期
response.addCookie(cookie); // 输出到客户端
这里是不同windows版本cookie存储的路径
2000、Xp:
Cookie:C:/Documents and Settings/[user name]/Cookies/
Vista、Win7:
在Vista、Win7中,权限管理较为严格,IE7/IE8 默认运行使用了保护模式机制,在保护机制下,IE 运行于低权限。如果 IE 运行在低权限下,则将目录设置为对应的Low目录,如下:
Cookie: C:/Users/[user name]/AppData/Roaming/Microsoft/Windows/Cookies/
C:/Users/[user name]/AppData/Roaming/Microsoft/Windows/Cookies/Low/
进入到目录以后按最新时间排序第一个文件就是你当前操作的cookie文件,这里的文件名是随机生成的。
是保存在sqlite数据库中的, 不可读的!!!
[root@localhost ~]# cd /root/.mozilla/firefox/05yqkdom.default
[root@localhost 05yqkdom.default]# ls
adblockplus gmp prefs.js
addons.json gmp-gmpopenh264 reading-list.sqlite
blocklist.xml healthreport revocations.txt
bookmarkbackups healthreport.sqlite search.json
cert8.db healthreport.sqlite-shm search-metadata.json
compatibility.ini healthreport.sqlite-wal secmod.db
content-prefs.sqlite jetpack sessionCheckpoints.json
cookies.sqlite key3.db sessionstore-backups
cookies.sqlite-shm lock SiteSecurityServiceState.txt
cookies.sqlite-wal logins.json storage
crashes mimeTypes.rdf times.json
datareporting minidumps webapps
enumerate_devices.txt permissions.sqlite webappsstore.sqlite
extensions places.sqlite webappsstore.sqlite-shm
extensions.ini places.sqlite-shm webappsstore.sqlite-wal
extensions.json places.sqlite-wal xulstore.json
formhistory.sqlite pluginreg.dat
[root@localhost 05yqkdom.default]# vim cookies.sqlite
[root@localhost 05yqkdom.default]# vim cookies.sqlite-shm
[root@localhost 05yqkdom.default]# vim cookies.sqlite-wal
[root@localhost 05yqkdom.default]#
cookies.sqlite
设置cookie为空
创建cookie
分页的样式: