cookies

cookies

Cookie是网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

为什么需要cookie?因为HTTP协议是无状态的,一个浏览器发出的多次请求,服务器无法区分是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。

cookie生成和发送过程

Cookie由服务器端生成,通过HTTP Headers中的Set-Cookie从服务器端发送到浏览器上,浏览器将Cookie的key/value保存到特定目录下的文本文件内,下次请求同一网站时发送该Cookie(http头)给服务器(前提是浏览器设置为启用cookie)。

cookie会检查当前要请求的域名以及目录,只有这二项与Cookie对应的Domain和Path匹配,才会发送。对于Domain则是按照尾部匹配的原则进行的。

如果cookie的有效期是当前会话,浏览器会将cookie保存在内存中,浏览器关闭时就会清除这些cookie。另外一种浏览器关闭时会将cookie写入硬盘中,直到cookie过期。cookie有效期内,再次打开浏览器访问对应网站时,对应的cookie就会自动发送到服务端。

当前设置的Cookie 不是立即生效的,而是要等到下一个页面时才能看到。这是因为设置的这个页面里Cookie由服务器传递给客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器。在同一个页面设置Cookie,实际是从后往前,所以如果要在插入一个新的Cookie之前删掉一个,你必须先写插入的语句,再写删除的语句,否则可能会出现不希望的结果。

浏览器对cookie的限制

大多数浏览器支持最大为 4096 字节的 Cookie;大多数浏览器只允许每个站点存储 20 个 Cookie;部分浏览器还会限制接受的来自所有站点的 Cookie 总数,通常为 300 个。

cookie中包含一些敏感信息:用户名、计算机名、使用的浏览器和曾经访问的网站,在某种程度危害人们的安全和隐私。

6san.com

发表评论