cookie、session

116 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

因为Http连接的无状态性,无法记录历史状态,就是每一次进行http请求web站点都不认识用户,比如再购入车里加入商品时,服务器并不知道之前用户加入了什么,只知道当前加入的东西。为了解决这个问题,发明了会话跟踪技术。

cookie和session是常用的会话跟踪技术,cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录信息确定用户身份。

  • cookie:

    • cookie机制

      客户端发送一个http请求到服务器端,服务器端发送一个http响应到客户端,其中包含Set-Cookie头部,客户端发送一个http请求到服务器端,其中包含Cookie头部,服务器端发送一个http响应到客户端。

    • 什么是cookie?

      cookie是由服务端生成的,发送给客户端的一小段文本信息 ,一直保存在客户端中,可分为内存cookie(非持久cookie)和硬盘cookie(持久cookie)。内存cookie,浏览器关闭后就消失了;硬盘cookie,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除。

  • sesion:

    • session机制

      在创建session的同时,服务器会生成一个唯一的session id,在之后的请求中会重新获得这个已经被创建好的session id,从而找到对应的session所存放是的数据。

    • 什么是session?

      储存在服务器端。在服务器端保存session并生成唯一的sessionID,浏览器每次通过访问服务器时传输sessionID就能找到保持连接的状态。

  • cookie和session的区别

    • 存放位置不同

      • cookie:客户端
      • session:服务端
    • 存放数据大小不同

      • cookie:4KB
      • session:5M
    • 存取方式不同

      • cookie:字符串
      • session:任何数据类型
    • 隐私策略不同:

      • cookie:储存在浏览器中,可能会被劫持和修改
      • session:储存在服务器中,很难泄露
    • 对跨域支持的不同

      • cookie:支持跨域名访问
      • session:不支持跨域名访问