cookie :
存储在客户端的一小段数据。
cookie 独立于语言存在,也就是说,不管是PHP还是JSP种下的Cookie,其本质都是一样的,客户端脚本(JS)均能读到。cookie 在很多语言都有实现,
而这些语言则是实现对 cookie 的间接操作,即发送 http 命令,浏览器收到命令变操作cookie 并返回给服务器。因此,cookie是由浏览器实现和管理的。
比如,使用PHP设置 cookie,它并没有真正的设置过 cookie,它只是发出命令让浏览器来做这件事。
cookie 上保存 true 或 false 不应该直接使用 boolean 值,而应该使用0表示false,1表示true。
httpOnly 这个参数,某些时候这可以增强网站的安全性,这个机制是怎么实现的?实际上就是通知浏览器给 cookie 加上个特殊的参数,屏蔽js脚本的读取。
通过其他方法还是能看到。如果浏览器不支持,即使设置 httpOnly,客户端Js也鞥呢读取到。这完全取决于浏览器怎么做的。
每个域名下面允许的cookie是有限制的,浏览器不同这个限制也不用。Firefox 一个域名允许存储 150个 cookie, cookie 最大字节数 4097。
cookie 存储在文件中,一种存储在浏览器缓存中。
一个域名的每个 cookie 限制以 4kb 键值对的形式存在。有些请求会带上 cookie,造成带宽的不必要浪费。针对以上弊端,使用了本地存储 localStorage。
session :
session 的实现方式可以有很多种,如 url 重写,cookie, 隐藏表单。
php 的 session 默认通过问卷的方式实现,文件名如下 :
sess_4c....
后面是随机的,32位编码的字符串。打开后如下:
变量名|类型:长度:值;
session 原理:
session 通过一个叫 PHPSESSID 的 cookie 和服务器联系。session是通过 sessionID 判断客户端用户的,即 session文件的文件名。
sessionID 实际上是客户端和服务器之间通过 http request 和 http response 穿来穿去。sessionID 按照一定的算法生成,必须包含在
http request 里面,保证唯一性和随机性,以确保sesion 的安全。如果没有设置 sesion 的存储器,sessionID 存在内存中,关闭浏览器后
该 ID 自动失效;重新请求该页面,会重新注册一个 sessionID。如果客户端没有禁用 cookie,cookie 在启动 sessioin 会话的时候扮演的是
存储sessioinID 和 Session 生存期的角色。可以手动设置 sessionID 的生存期。
session.save_path = '2;/tmp/phpsession'
/tmp/phpsession 作为 php 的 session 文件存放目录,在该目录下做2级目录散列,每一级目录分别以 0 ~ 9 和 a ~ z 共36个字符作为目录名。
session 的回收是被动的,为了保证过期的 session 能被正常回收,可以设置 php 配置文件中的 session_gc_divisor 参数提高回收率。对于设置
分级目录存储的 session,PHP 是不会自动回收,需要自己实现其回收机制.
socket:
cURL:
SMTP :
WebService :
cookie :
session :