了解Cookie和Session

说明

本文通过参考其他优秀博文和谢希仁编著的《计算机网络》对Cookie和Session进行总结

正文

      在《了解HTTP和HTTPS》一文中,我们了解到HTTP是无状态的,服务器无法通过连接跟踪识别用户。因此,采用Cookie和Session技术来跟踪用户会话。

Cookie是通过客户端记录的信息确定用户的信息。
Cookie的工作原理:
      当某一用户浏览某个使用Cookie的网站时,该网站的服务器就为该用户产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。接着在给该用户的HTTP响应报文中添加一个叫做Set-cookie的首部行。这里的“首部字段名”就是“Set-cookie”,而后面的”值“就是赋予该用户的”识别码“。ex: Set-cookie:12345678
      当用户收到这个响应时 ,其浏览器就在它管理的文件中添加一行,其中包括这个服务器的主机名和Set-cookie后面的识别码。当该用户继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从其Cookie文件中取出这个网站的识别码,并放到HTTP请求报文的Cookie首部行中,这样网站就可以跟踪该用户在该网站的活动。

Cookie具有不可跨区域性:每个网站服务器只能操作自己赋予的Cookie,不能操作其它服务器赋予的Cookie.
ex:Google会向用户赋予一个Cookie,当该用户登录baidu时,baidu也会赋予用户一个Cookie,此时Googel是不能操作baidu赋予的Cookie,baidu同样如此。

Cookie有效期
Cookie的maxAge属性决定Cookie的有效期,单位为秒(second)。
若该值为正数,则表示会在maxAge秒后失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中。
若该值为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口有效,关闭窗口后该Cookie失效。Cookie默认值为-1
若值为0,则表示删除该Cookie。

Session

Session是使用服务端记录用户(客户端)状态信息的一种机制,使用上比Cookie简单些,但是增加了服务器的存储压力。
在客户端访问服务器时,服务器将客户端的信息以某种形式记录在服务器中,这就是Session。当客户端再次访问时只需要在Session中查找该空户的状态就可以了。

Session的生命周期
      一般情况下,用户首次访问服务器时,服务器会给用户分配一个sessionID来唯一标识这个用户,每个用户具有不同的sessionID。
      只有在访问jsp,servlet等程序时才会创建session,只访问html等静态资源并不创建session。
      Session保存在客户端,为了获得更高的存取速度,服务器一般把Session存储在内存中。为了防止内存溢出,服务器会把内存中长时间没有活跃的Session删除,这个时间就是Session的超时时间,如果超过了超时时间没有访问过服务器,Session自动失效。用户每访问服务器一次,都认为该用户的Session“活跃(active)”了一次。

Session对浏览器的要求:
      Session虽然是保存在服务器上,对客户端是透明的,但正常运行仍需要客户端的支持,因为Session需要使用Cookie作为识别标志。服务器会向客户端浏览器发送一个名为JSESSIONID的Cookie,值为该Session的id(也就是HttpSession.getId()的返回值),Session依据该Cookie来识别是否为同一用户。
      在许多服务器上,如果浏览器支持Cookie,就直接使用Cookie,如果浏览器不支持或禁止了Cookie,就自动转化为URL-rewriting(重写URL)。

重写URL
URL地址重写的原理是将该用户Session的id信息重写到URL地址中,服务器能够解析重写后的URL获取Session的id。

Cookie和Seesion的区别:

(1)Cookie数据存放在客户端浏览器上,Session数据存放在服务器中
(2)Cookie安全性低,别人可以分析存放在本地Cookie文件进行Cookie欺骗,Session相对比较安全
(3)Session存放在服务器,当访问增多,会给服务器带来存储压力,影响服务器性能
(4)在客户端,一个浏览器能创建的Cookie数量最多为300个,并且每个不能超过4KB,每个Web站点能设置的Cookie总数不能超过20个
(5)综上,将登录信息等重要的信息存放在Session中,将其它信息若要保留,存放在Cookie中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值