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
session和cookie的那些事
最新推荐文章于 2023-12-24 18:06:39 发布
cookie是HTTP协议头中的一个字段,