session和cookie的那些事

session与cookie

问题引出:

        1.为什么你请求一次某网站之后,保存用户信息之后再请求网站的时候不用再次输入账号和密码?

        2.为什么你可以设置多个浏览器可以同时访问同一个浏览器,而只需要登录一个浏览器即可?

        3.为什么别人捣鼓一下你的电脑,你某某网站的信息都被暴露了(这个貌似有超级多手段。。)?

        4.为什么有时候二次登录某个网站,网站会弹出弹框:欢迎XX,为什么浏览器/服务器认识自己?

好了,带着这四个问题进去思考吧,由session和cookie的原理及其应用就可以得到这三个问题的部分解答。


首先,session和cookie只是http协议中的一个配置项,这样感觉是不是简单很多,但其实一个配置就很复杂了,好好学习吧骚年,哈哈哈,当你在工作中用到cookie和session的时候,你必须考虑到http协议对cookie大小和数量限制以及session和cookie在传播中的安全等等问题。


cookie:

         cookie来源:

          由于http协议是一个无状态协议,每次用户访问结束后(就是交换完一波数据),再次访问的时候,服务器是无法判断是不是同一个人访问的,cookie当初在设计的时候只是记录用户在一段时间内访问web的行为路径, 没想到多年后的今天,成了广泛使用的cookie


         Cookie工作原理

          Cookie的英文意思是“甜饼”,每个服务器在用户访问的时候都会给客户端的孩子颁发一个小甜饼,每个小甜饼都不一样,都会有过期时间,下次访问的时候,带着没有过期的小甜饼就可以让服务器辨别出来是谁了,也就是从通行证上确认客户端身份了

          cookie是HTTP协议头中的一个字段,在http的响应头中加上一行特殊的指示,提示浏览器生成相应的cookie。在浏览器请求访问的时候,浏览器会检查所有存储的cookie,如果某个cookie作用的范围是超过或等于将要请求的资源所在的位置(就类似你拥有百度一个账号的cookie,可以自动登录百度很多应用,个人了解),则将cookie附在请求资源的HTTP请求头上发送给服务器,注意此时服务器也会去检查这个cookie。

         使用cookie参考文章http://wangqiaowqo.iteye.com/blog/680841


          cookie的分类:

          目前cookie按照存在时间可以分成两种,一种是会话cookie(临时cookie),一种是永久cookie

                 会话cookie:并不设置过期时间,只要关闭浏览器窗口,cookie就消失了,只在生命期的cookie被称作会话cookie,因为硬盘是长久存储,所以一般会话cookie都是存储在内存中。

                 永久cookie:设置了cookie的过期时间,浏览器将cookie以文件的形式保存在硬盘上,关闭浏览器之后再次打开浏览器,创建改cookie的网站可以读取该cookie。

          存储在硬盘上的cookie可以再不同浏览器进程之间共享,但是需要稍稍做一下放到各自的文件夹中,而对于储存在内存中的cookie,不同的浏览器有不同的处理方式。


         cookie的格式及组成:参考:http://blog.csdn.net/talking12391239/article/details/9665185


                 注意存在的前提是 浏览器支持使用cookie,


          cookie是不可跨域名性:

         就是一级域名不一样,不能相互操作彼此的cookie,一级域名下的两个二级域名也不能交互使用cookie,如果希望一级域名下的所有的二级域名都可以使用以及域名的cookie,需要设置cookie的domain参数


         cookie的安全属性

          cookie如果在http等非安全协议中传输,可能会被解惑,不安全,可以将cookie的secure属性为true,浏览器只会在https和ssl等安全协议中传输此类cookie

                 

                 cookie的永久登录:

         方法我知道的是两种,在网上大神中看到了第三种,感觉真是奇妙,毕竟自己没有想到,绝对大神,膜拜。

          方法一:将登录信息保存在cookie中,控制cookie的有效期,当然这样是不安全的

          方法一的进阶版:将登陆信息加密,存到cookie中,控制cookie的有效期,当然这样也是不安全的,那么就把最近一次登录的时间戳保存到cookie中,到时候只需验证用户名和cookie即可,这是比较保险的方法

          方法二的进阶版:只在第一次登录的时候查数据库,之后访问验证的时候就不用查数据库了,就是将账号按照一定的规则加密,连同账号一起保存在cookie中,到时候访问时只需要判断账号的加密规则是否正确即可。

          当然上面三种方法都是存在风险的,看取舍了。源自: 

     点击打开链接http://blog.csdn.net/fangaoxin/article/details/6952954/



session

        

        

       





          cookie是HTTP协议头中的一个字段,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值