Cookie使用注意事项
1、 分类
cookie可以手动设置,也可以由服务器产生,当客户端(浏览器)向服务器发送请求,服务器会反馈一些信息给客户端,这些信息的key/value值被浏览器作为文件保存在客户端特定的文件夹中。
内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。
硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的
2、 参数
| |
属 性 名 | 描 述 |
String name | 该Cookie的名称。Cookie一旦创建,名称便不可更改 |
Object value | 该Cookie的值。如果值为Unicode字符,需要为字符编码。如果值为二进制数据,则需要使用BASE64编码 |
int maxAge | 该Cookie失效的时间,单位秒。如果为正数,则该Cookie在maxAge秒之后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该Cookie。如果为0,表示删除该Cookie。默认为–1 |
boolean secure | 该Cookie是否仅被使用安全协议传输。安全协议。安全协议有HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false |
String path | 该Cookie的使用路径。如果设置为“/sessionWeb/”,则只有contextPath为“/sessionWeb”的程序可以访问该Cookie。如果设置为“/”,则本域名下contextPath都可以访问该Cookie。注意最后一个字符必须为“/” |
String domain | 可以访问该Cookie的域名。如果设置为“.google.com”,则所有以“google.com”结尾的域名都可以访问该Cookie。注意第一个字符必须为“.” |
String comment | 该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明 |
int version | 该Cookie使用的版本号。0表示遵循Netscape的Cookie规范,1表示遵循W3C的RFC 2109规范 |
摘自:
http://www.cnblogs.com/hustskyking/archive/2013/03/27/javascript-cookie.html
3、 要点
1.Cookie
数量和长度的限制。
各个浏览器的限制不同IE7+和Firefox最大限制为50条,chrome和Safari无限制,IE6-最大限制20条。每个 cookie 所存放的数据不能超过4kb,如果 cookie 字符串的长度超过4kb,则该属性将返回空字符串。
cookie个数不要超过50条,大小不能超过4KB
2.安全性问题。
客服端每次访问服务端都会携带cookie,cookie容易被人拦截,所有的session信息被公开。
cookie不要保存机密信息,让服务端来确保用户信息安全。
3.关于cookie的编码。
使用encodeURIComponent编码,decodeURIComponent解码。
摘自:
http://www.cnblogs.com/chuaWeb/p/5103356.html
4.cookie每次随HTTP请求一起发送,浪费宽带,移动端推荐使用localStorage。
5.字符串切割时 使用"; "切割( 要有空格)
6.当添加的数据key值不存在时 新建条目 , 如果key值存在 覆盖原数据 覆盖后条目在cookie的末尾
7.同源政策
浏览器的同源政策规定,两个网址只要域名相同和端口相同,就可以共享Cookie。注意,这里不要求协议相同。也就是说,http://example.com设置的Cookie,可以被https://example.com读取。
8.HttpOnly
设置Cookie的时候,如果服务器加上了HttpOnly属性,则这个Cookie无法被JavaScript读取(即document.cookie不会返回这个Cookie的值),只用于向服务器发送。
摘自:
http://javascript.ruanyifeng.com/bom/cookie.html
9.有效期
在默认的情况下,cookie 会在浏览器关闭的时候自动清除,但是我们可以通过expires来设置 cookie 的有效期。
摘自:
http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html
10. cookie中不能直接存储中文。
11.关于cookie的覆盖问题。
Cookie唯一标识相同,认定是一个cookie,新的值覆盖旧的值。
Cookie唯一标识不同,认定是两个没有任何关系cookie,分别保存。
Cookie唯一标识:域名 +资源路径 + cookie名字
摘自:
http://blog.csdn.net/u013469562/article/details/53134706
参考:
http://laravelacademy.org/post/623.html
https://github.com/qiqiboy/COOKIE
http://www.fscwz.com/2015/11/10/JavaScript-cookie/
https://github.com/js-cookie/js-cookie JavaScriptAPI来处理浏览器的cookies