1、什么是cookie
Cookie是由服务器端生成的,发送给User-Agent(一般是浏览器),(服务器告诉浏览器设置一下Cookie),浏览器会将cookie以key/value 的形式保存在某个目录下的文本文件内,下一次请求同一网站时就发送该Cookie服务器(前提是浏览器设置Cookie)
cookie使用场景:
-
会话管理
:登陆、购物车等应该记住的其他内容 -
个性化
:用户偏好、主题或者其他设置 -
追踪
:记录和分析用户行为
Cookie的特点 :
- 有生命周期
- 满足同源策略
- 内存大小受到限制(一般4k左右)
cookie的分类:
-
Session Cookies
-
Persistent Cookies
cookie原理:
第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会将cookie放入到响应请求中(就在http响应报文的header中Set-Cookie项),在浏览器第二次发请求的时候,会把cookie带过去(http请求报文header中的cookie项),服务端会辨别用户身份,当然服务器也可以修改cookie内容。
2、什么是 localStorage
localStorage 是 HTML5 提供的一个 API,他本质上是一个hash(哈希表),是一个存在于浏览器上的 hash(哈希表)。
localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的 UI 上清除 localStorage 信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。
localStorage使用方法:
localStorage.setItem("key","value"); //以“key”为名称存储一个值“value”
localStorage.getItem("key"); //获取名称为“key”的值
localStorage.removeItem("key"); //删除名称为“key”的信息。
localStorage.clear(); //清空localStorage中所有信息
localStorage
是一个保存于客户端的哈希表,可以用来保存本地的一些数据。并且不会因为刷新而释放,所以,可以使用 localStorage 来实现变量的持久化存储
localStorage的特点:
- localStorage 与 HTTP 没有任何关系,所以在HTTP请求时不会带上 localStorage 的值
- 只有相同域名的页面才能互相读取 localStorage,同源策略与 cookie 一致
- 不同的浏览器,对每个域名 localStorage 的最大存储量的规定不一样,超出存储量会被拒绝。最大存5M 超过5M的数据就会丢失。而 Chrome 10MB 左右
- 常用来记录一些不敏感的信息
- localStorage 理论上永久有效,除非用户清理缓存
3、什么是JSON字符串
- JSON是一种特殊的字符串格式,本质是一个字符串
- 像对象和数组,里面的key和value如果是字符串格式,都用双引号包裹(必须是双引号)
JSON的两个方法:
**1. JSON.parse(json字符串):可以把json字符串转换成对象或者数组
2. JSON.stringify(对象或者数组):可以把对象或者数组转换成json字符串**
JSON语法 注意事项
1.对象中的key和value都使用双引号包裹,数字和布尔值可以不用双引号包裹
2.数组里卖可以放多个对象
3.多个数据时,最后一个数据不能有逗号
4. JSON格式中,可以使用的符号只能是 { } [ ] " 双引号" 逗号
// JSON格式的字符串
var jsonObj = '{"name":"lucy","age":18,"love":"写代码"}'
var jsonArr = '[1,2,3,4,5,6]'
// JSON.parse(json字符串):可以把json字符串转换成对象或者数组
var obj = JSON.parse(jsonObj);
var arr = JSON.parse(jsonArr)
console.log(obj);// 转换后是js对象 {name: 'lucy', age: 18, love: '写代码'}
console.log(arr);// arr就是我们的js数组 数组里面可以放多个对象
// JSON.stringify(对象或者数组):可以把对象或者数组转换成json字符串
var obj2 = {
a:1,b:2,gender:'男'
}
var arr2 = [
{a:1,b:2,gender:'男'},
{a:10,b:20,gender:'女'}
]
var jsonObj2 = JSON.stringify(obj2);
var jsonArr2 = JSON.stringify(arr2)
console.log(jsonObj2);// json字符串
console.log(jsonArr2);// json字符串