5.Cookie和Session

1. Cookie

  1. Cookie是直接存储在浏览器本地的一小串数据
    • 使用document.cookie访问cookie
    • 修改cookie时,只会修改其中提到的Cookie
    • name=value必须被编码(encodeURIComponent)
    • 一个Cookie最大为4Kb,每个网站最多有20+个左右的Cookie(具体取决于浏览器)
  2. Windows中的Chrome浏览器的Cookie存放位置
    1. C:\Users\用户名\AppData\Local\Google\Chrome\User data\Default\Cookie
    2. 使用SQLite数据库进行存储

2. Cookie的作用域

  • domain和path标识定义了Cookie的作用域,即Cookie应该发送给哪些URL
  • domain
    • 标识指定了哪些主机可以接受Cookie
    • 如果不指定,默认为当前文档的主机(不包含子域名);如果指定了domain,则一般包含子域名
    • 例如:如果设置domain=520it.com,则Cookie也包含在子域名中(如bbs.520it.com)
  • path
    • 标识指定了主机下的哪些路径可以接受Cookie,子路径也会被匹配
    • 例如:设置path=/docs,则以下地址都会匹配
      • /docs
      • /docs/one/
      • /docs/one/img

3. 服务器getSession()内部的原理

  1. 检查客户端是否有发送一个叫做JSESSIONID的Cookie
  2. 如果没有
    1. 创建一个新的Session对象,并且这个Session对象会有一个id
    2. 这个Session对象会保留在服务器的内存中
    3. 在响应的时候,会添加一个Cookie(JSESSIONID=Session对象的id)给客户端
  3. 如果有
    1. 返回Id为JSESSIONID的Session对象

总结:

1. Cookie

  • 数据存储在浏览器端
  • 数据有大小和数量的限制
  • 适合存储一些小型,不明感的数据
  • 默认情况下,关闭浏览器后就会销毁

2. Session

  • 数据存储在服务器端
  • 数据没有大小和数量的限制
  • 可以存储大型,敏感的数据(比如用户信息)
  • 默认情况下,未使用30分钟后就会销毁
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容