Cookie,Session ,Application是什么?

目录

Cookie

  • 本身用于浏览器和服务端通讯
  • 存放在客户端中,可以设置过期时间

缺点:

  • 大小限制,4k
  • 不确定性:用户可以删除cookie或禁用
  • 安全风险:可伪造修改

推荐阅读:cookie localStorage sessionStorage

Session

什么是Session?

当用户通过浏览器访问服务器时,服务器本身并不知道是谁来访问的(http协议是无状态的)。
于是,服务器就给每个访问者进行临时编号(即,给每个访问者创建对应的session会话)。
与此同时,为了方便一段时间内访问者都可以对服务器“自由访问”,服务器就把临时编号(sessionID)传给访问者(存储在客户端的cookie中,当浏览器关闭时释放;或跟在URL地址后面)
在这段时间内,需要进行请求验证时,服务器就可以直接拿着访问者的临时编号进行验证。

注意: 这个浏览器指的是浏览器窗口,或者是浏览器的子窗口。意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session

关于Session

  1. 每个用户访问服务器时,都会在服务端创建一个相对应的Session,分配的SessionID是唯一的,用来标识不同的用户
  2. 为了获取更快的存储速度,服务端可以把Session保存在内存中(当然也可以存储在文件中,数据库中),因此放在Session中的信息应该精简,避免内容过于复杂,当大量用户访问时可能导致内存溢出
  3. Session是具有生命周期的,当超过了这段时间,Session就会失效
  4. Session生成后,只要用户继续访问,服务器就会更新该Session的最后访问时间,并维护该Session
  5. 当用户访问过多时,随之创建的Session也会变多,为了防止内存溢出的问题,服务器会把长时间没有访问的Session给删除掉

Session的传递方式

  1. 通过Cookie实现
    sessionID放在Cookie里面;
    临时Cookie会在当前浏览器关闭时消失,而Session也是当浏览器关闭时消失的。因此可以用临时Cookie存放,而且保存的sessionID不会重复,因为Cookie里存储的是键值对,是独一无二的,相同的会被覆盖
  2. 通过URL重写实现
    如果浏览器不支持Cookie的时候,就可以使用URL重写的方式实现
    即,在url地址后面追加sessionID
  3. 使用HTTP请求头来传输
    比如标准的Authorization,也可以自定义,如 X-Auth-SessionID 等。但是这个请求头浏览器不会像 cookie 一样自动携带,需要手工处理。

Application

  • Application用于保存所有用户的公共数据信息,存放在服务端中
  • Application适用于任何大小的数据
  • Application保存期贯穿于整个应用程序的生命期
  • Application适用于所有用户,是所有用户公用一个

注意: 当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合
举例: 在网页上显示在线人数

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章