1、url传值:利用H5的浏览器的相关API,进行split、pop、slice等函数操作获取自己想要的。
//这种传值一般适合比较短的数据,比如id、name,然后利用id等发网络请求获取相关数据。
2、cookie存储:将数据存在浏览器的cookie中,设置过期时间等等。
//document.cookie = `name=monsterooo;expires=${t.toGMTString()};`;
3、web存储:localStorage和sessionStorage存储。
// 将我们需要传递的数据存储在localStorage或sessionStorage存储,在需要时进行读取数据。
顺便总结一下cookie、session、localStorage以及sessionStorage。
1、cookie:分为会话cookie和持久cookie。他们的区别主要在于是否设置了过期时间expires。
功能:用来保存用户身份的。cookie的存储在浏览器端,其大小仅4k左右,且仅仅在过期时间内有效,但是会存在跨域问题。
优点:数据轻量、数据即使被盗仍可以通过设置过期时间来保护数据安全、不需要服务器资源。
字段:
expires:过期时间,需要注意的是他必须是一个绝对时间(具体的GMT时间)。其缺点是如果系统的时间发生错误(比如被设置为2099年····),那么cookie就会失效。
domain:可以访问该cookie的域名。
注意点:
a、cookie虽然存在浏览器端,但是服务器和客户端均可以设置cookie字段;
b、存在跨域问题。默认在请求跨域时,cookie不会被传送到服务器,我们需要设置Access-Control-Allow-Credentials:true。
c、由于cookie存在于浏览器端,所以安全性并没有session高。
2、LocalStorage:H5新特性,作为(浏览器端)本地存储用的,解决了cookie存储空间不足的情形。
优点:存储大小为5M,且不会过期,除非自己手动删除(只要不同源就不能共享localStorage的数据)。
缺点:
a、兼容性问题----H5特性;
b、LocalStorage的值被限定为String类型,与我们所习惯的JSON格式需要转换。
3、sessionStorage:存储大小也为5M左右,在客户端存储,但当页面关闭或者浏览器关闭时,数据会被清除,需要注意的是,页面刷新不会丢失存储的数据。
4、session:需要提一点的是,它和sessionStorage不是同一个概念。
session是存在于服务器端的,是基于cookie来识别用户的,因为session id存在于cookie中。
注意:
由于session存在于服务器端,如果不采取任何措施,那么随着访问量增大,整个服务器的负载会随之增大。所以为了防止内存溢出,服务器会设置Session的有效期,一旦超过有效期,则删除该session。