前言
有些时候技术群里面的群友会说一些涉及 Session 和 Cookie 的问题,但是通过他们的表述感觉其对两者并没有了解清楚,今天简单说明一下。
Cookie
cookie 是存储在浏览器端的信息,以一串文本形式存在,存储的容量有限,大约为 4KB;我们可以通过 cookie 保存一些登录相关的账号密码等信息,并且我们可以人工的去编辑、阻止或者删除它,这种方式本身有着很大的风险性;如果我们不设置 cookie 的过期时间时,cookie 信息保存在内存中,当浏览器关闭窗口时,就会自动将 cookie 删除;如果设定了过期时间,则浏览器会将 cookie 保存在硬盘中。存储在硬盘上的 cookie 可以在不同的浏览器进程间共享,比如两个浏览器窗口。而对于保存在内存里的 cookie,不同的浏览器有不同的处理方式。cookie 在本地的存储格式为 key=value;key1=value1 有点类似于 map 的键值对,每个键值对之间用;号隔开,同时不允许键、值中出现分号(;)、逗号(,)、等号(=)以及空格;如果值中需要出现上述特殊字符,可以需要使用 escape()函数进行编码,取值时候通过 unescape()函数将取出的值进行解码。
前端持久化存储的方式除上述 Cookie 外还有以下几种形式:
- SessionStorage
- LocalStorage
- IndexDB
- WebSQL
对于 APP 来讲,也是存储有 Cookie 信息的,因为 WKWebView
、UIWebView
其实本身也是一种浏览器壳子,拿 iOS 的 WKWebView
举个