iTesting,爱测试,爱分享
最近遇见一个好玩的bug, 现象是页面刷新白屏,RootCause是Header里放的cookie太多了, 大小超出了4kb的限制. 解决方法很简单,拆出一部分放到LocalStorage.问题解决了,但是个人觉得很有意思,平常司空见惯的,觉得"假大空不接地气"的概念,其实都真真切切的在项目中体现了,只不过我们熟生轻视,看不见而已.遂记录本文. 面试的时候经常喜欢问一个问题,HTTP协议是有状态的还是无状态的? 很多同学都不知道,或者简单背一个答案,曰无状态.再问,那么HTTP协议如何保持状态?只有一小部分同学能答出来要用cookie和session.再问,有了cookie为什么还要session? 更少一部分人能答出来安全。 再问,不要cookie行不行? 能答出URL重写的已经不错了。 对于高级的测试,再继续深入,session保存在服务器内存中,随着用户的增多,服务器撑不住了怎么办? 假设我使用了集群服务怎么办? 这个时候聪明点的就会答sesion sticky, 或者使用Memcached集中所有session id了。 但这也带来另外一个问题,session 服务器挂了怎么办? 再弄个集群,有点傻吧,自然的,Token就被带出来了。 然后再问Token一般怎么生成的啊? 服务器生成,把user id+时间+私密签名用Base64加密生成,自己保存一份(不放内存放DB, 也可以不保存,那么收到客户端id就用加密算法再算一次生成token来对比), 发给客户端一份。 能回答到这里的已经可以了。 接着再顺便问一句,token里能不能保存敏感信息啊? 为什么? (Base64是加密吗?

cookie 和session的区别
1. cookie放在客户端的浏览器上,session放服务器上。
2. Session生成的Session id是在cookie里保存的,cookie被禁止后可以通过URL重写来继续使用session
3. cookie不是安全,存放在本地的COOKIE可能被获取并进行COOKIE欺骗。
4. session会给服务器带来压力,考虑到服务器性能,应当使用COOKIE。
5. cookie只能保存字符串类型,以文本的方式。session通过类似与Hashtable的数据结构来保存,能支持任何类型的对象(session中可含有多个对象)
6. 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie, Session大小没限制。
Token 和Session区别
1. Token放客户端, Session在服务端。
2. Session是空间换时间, Token是时间换空间。
3. Token解决了集群时候跨节点访问问题。
Cookie有限制,每次请求服务端必须带上,还有大小不能超过4kb,如果想突破这个限制怎么办?
WebStorage
为克服由cookie所带来的一些限制,当数据无需发回服务器时使用。
WebStorage两个主要目标:
1. 提供一种在cookie之外存储会话数据的路径。
2. 提供一种存储大量可以跨会话存在的数据的机制。
HTML5的WebStorage提供了两种API:
localStorage(本地存储)
sessionStorage(会话存储)
这两种区别在哪里?
1、生命周期:
2、存储大小:
3、存储位置:
4、存储内容类型:
5、应用场景:
Web Storage带来的好处:
1、减少网络流量:
2、快速显示数据:
3、临时存储:
- - 时人莫小池中水, 浅处不妨有卧龙 - -
作者:
Kevin Cai, 江湖人称蔡老师。
两性情感专家,非著名测试开发。
技术路线的坚定支持者,始终相信Nobody can be somebody。
· 猜你喜欢的文章 ·
分库分表小结-论QA的自我修养
前端测试框架Cypress从入门到精通(预告)
如何利用cookie实现无UI登录
HTTP协议总结