美文网首页
说说session与cookie

说说session与cookie

作者: 舒小贱 | 来源:发表于2017-09-27 11:58 被阅读0次

    知识点:session,cookie,sessionID,url重启和表单隐藏字段来防止人为不传cookie

    当你在浏览某个网站的时候,WEB 服务器会先送一小小资料放在你的计算机上, Cookie 会帮你在网站上所打的文字或是一些选择都纪录下来,下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。

    由于在服务端保存状态的方案在客户端也需要保存一个标识,所以session机制一般要借助于cookie机制来达到保存标识的目的。

    cookie的内容包括:名称、值、路径、域、过期时间。路径与域构成cookie的作用范围。若不设置过期时间,则此cookie的生命周期为浏览器会话期间,关闭浏览器窗口,则cookie就消失。没有设置过期时间的cookie是保存在内存中的。如果设置了过期时间,则cookie会写入到硬盘,关闭窗口后再次打开窗口,cookie还能继续使用直到有效期达到。存储在硬盘上的cookie可以在不同的浏览器间共享。但是存储在内存中的cookie是否能与其他浏览器进程共享,不同的浏览器有不同的机制。

    cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

    当程序需要为某个客户端的请求建立一个session时,首先查看客户端的请求里面有没有session标识(就是sessionID),如果有则说明之前已经为此客户端保存过session,服务器就按照sessionID把这个session检索出来使用,如果检索不到就新建一个。如果客户端的请求里面不包含sessionID,则为此客户端新建一个session并生产一个与此session相关联的sessionid,并将sessionID返回给客户端保存。客户端保存这个session可以用cookie,这样在交互的过程中浏览器可以按照规则自动将sessionID发送给服务端,一般这个cookie的名字就是sessioniD。但是cookie可以被人为禁止,则必须有其他机制在cookie被禁止时,仍然能够把sessionid传给服务器。一般通过url重写和表单隐藏字段两种方式来实现。

    url重写就是把sessionid直接附加在url后面发送给服务端
    隐藏表单提交是将sessionid放到一个隐藏字段中,随表单一起提交,如:

    <form name="testform" action="/xxx"> 
    <input type="hidden" name="jsessionid" value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764"> 
    <input type="text"> 
    </form> 
    

    1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
    考虑到安全应当使用session。

    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
    考虑到减轻服务器性能方面,应当使用COOKIE。

    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    5、所以个人建议:
    将登陆信息等重要信息存放为SESSION,
    其他信息如果需要保留,可以放在COOKIE中.

    参考

    相关文章

      网友评论

          本文标题:说说session与cookie

          本文链接:https://www.haomeiwen.com/subject/cvvyextx.html