美文网首页
Cookie和Session的区别

Cookie和Session的区别

作者: 史前火种 | 来源:发表于2019-02-28 20:01 被阅读0次

    cookie

    cookie机制原理

    Cookies是服务器在客户机上存储的数据,客户端每次请求都会携带cookie,服务端通过cookie可以识别用户状态。

    cookie属性
    • name/value:以key/value的形式存在
    • comment:说明该cookie的用处
    • domain:可以访问该cookie的域名
    • Expires/maxAge:cookie失效时间。负数:临时cookie,关闭浏览器就失效;0:表示删除cookie,默认为-1
    • path:可以访问此cookie的页面路径
    • size:cookie的大小
    • secure:是否以https协议传输
    • version:该cookie使用的版本号
    • HttpOnly:此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie,能防止XSS攻击。

    session

    • session是保存在服务端的一个类HashTable结构数据,用来识别用户的状态,这个数据可以保存在集群、数据库、文件中。
    • 当客户端发出一个请求,服务器会先检查这个请求里是否包含session标识(sessionId)。如果已包含,则说明以前已经为此客户端创建过session,服务器就按照sessionId找到对应的session。如果客户端请求不包含sessionId,则为此客户端创建一个session和对应的sessionId,并将sessionId存在cookie返回。
    • sessionid是服务器和客户端链接时候随机分配的,重复概率很小。

    区别

    • cookie和session都是用来识别用户身份状态会话方式
    • cookie 数据存放在客户的浏览器上,session数据放在服务器上;
    • cookie 不是很安全,别人可以分析存放在本地的 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session;
    • session 会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,考虑到减轻服务器性能方面,应当使用cookie;
    • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个 cookie。
    • 域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享
      image.png

    使用场景

    • 将登陆信息等重要信息存放为 session;
    • 其他信息如果需要保留,可以放在 cookie 中。

    相关文章

      网友评论

          本文标题:Cookie和Session的区别

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