总结:
1.首先,session与cookie都是保存数据的,存在的原因很大程度上是为了解决HTTP协议的无状态特性
2.都是保存数据,却别在于cookie保存在客户端,由浏览器管理,session保存在服务器端,由服务器管理
3.cookie有多个属性:
名称 --name, 值--value,
失效时间(不设置为会话cookie随浏览器关闭失效), secure(该Cookie是否 仅 被使用安全协议传输,https,ssl等),
path(设置路径后只能在此目录下使用), domain(可使用该cookie的域名),
comment(该Cookie的用处说明。浏览器显示Cookie信息的时候显示该说明),
version(该Cookie使用的版本号)
4.客户端请求数据时,携带session id时,则找到对应session 并使用,没有则创建session并根据自己的算法生成session id,并将在本次响应中返回给客户端保存,默认使用cookie保存,
5.因为session id 保存在cookie中,所以禁用cookie session会失效,然后session id还可以保存在其他地方, php.ini 中, session.use_cookies = 1指定是否在客户端用 cookie 来存放会话 SID。可以设置session id的保存形式,如 果客户端Cookie禁用,则服务器可以自动通过 重写 URL 的方式来保存Session的值
6.一般情况,session保存在服务器内存中,如果设置了Session的持久化特性,服务器就会把Session保存到硬盘上
7.cookie保存在客户端,http请求时cookie会被携带在报头,所以cookie过大会很占带宽,session保存在服务器内存,所以session过大会很占服务器内存
分割线------------------------------------ ------------------------------------ ------------------------------------ ------------------------------------ ----
首先, 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做了特殊处理 (域名处理) 。