navigation 浏览器相关信息
- navigation.userAgent 用户代理,包含当前目前浏览器的一些信息,即用户用什么设备打开该页面
history API 记录页面历史信息
- history.back() 页面后退一次
- history.forward() 页面前进一次
- history.go(n/-n) 页面前进/后退n次,如果n超出了历史范围,则n为-1
- history.pushState (state, title, url) 向当前浏览器会话的历史堆栈中添加一个状态(state),title可忽略
history.pushState({page:1}, '', '/233')
如果当前页面url是 'xxx域名/文件名', 则调用上面命令后,url变为 'xxx域名/233';同时往页面添加了{page:1的}状态,该页面的 history.state 为 {page:1},
- history.replaceState(state, title, url) 更改当前浏览器会话的历史记录项,与pushState类似,区别在于pushState是新增,replaceState是更改
history.replaceState({page:1}, '', '/233')
如果当前页面url是 'xxx域名/文件名', 则调用上面命令后,url变为 'xxx域名/233';同时把页面的state更改为{page:1的},该页面的 history.state 为 {page:1},但该页面往前返回并不会返回至原先页面,因为是更改而不是新增
loaclStorage 本地存储
- 用于将大量数据(最大5M)保存在浏览器中
- 保存后数据永不过期,除非用 js手动清除
- 不参与网络传输
用法:loaclStorage.setItem(key, value) 将一对键值对存储至浏览器
loaclStorage.getItem(key) 读取对应的value值
localStorage.removeItem(key) 清除对应的值
- localStorage中的value值必须是string类型,如果不是,则会被强制转换为string
- 所有key value会被存进一个数组里,在本地存储
- 如何把对象存储进localstorage?
- 用JSON.stringify()方法把对象转换为字符串,存进localStorage
let obj = {a:1, b:true}
JSON.stringify(obj)
localStorage('a', JSON.stringify(obj))
let obj1 = localStorage.getItem('a')
JSON.parse(obj1)
- 取出,用JSON.parse()方法把它重新转换为对象
cookie
- 存储在浏览器上的一小段数据,用于记录某些当页面关闭或刷新后仍需记录的信息
- 可以用 js 在浏览器直接设置(用于记录不敏感信息,如用户名),也可也在服务端通过使用HTTP协议规定的set-cookie来让浏览器种下cookie,这是最常见的做法
- 每次网络请求 Request headers 中都会带上cookie,所以如果cookie太多会对传输效率有影响
- 最大容量为4k,有过期时间,过期自动清除
服务器设置的cookie参数:
服务器在发过来的参数中设置cookie,浏览器存储,在下次浏览器发送请求的时候把存储的cookie信息也带上,服务器接收到之后就可以根据cookie信息确认身份
session 鉴权机制
session stroage
- 与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在页面会话结束时会被清除