在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Cookie和Session有哪些区别?其实,两者作为PHP会话管理的差异是显而易见的。Cookie是数据存储在浏览器端,最大的优点是方便与JS交换数据和获取用户信息。而Session数据存储在服务器,它的优势是安全高效,不依赖浏览器端环境。严格来说,两者各自有着千丝万缕联系的同时,也是相互区别的。下面小编来带大家一起认识一下Cookie和Session。
1、什么是Cookie
HTTP 是无状态的协议:每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪,就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。
Cookie存储在客户端:Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。Cookie是不可跨域的: 每个Cookie都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的。
Cookie重要的属性属性说明name=value键值对,设置Cookie的名称及相对应的值,都必须是字符串类型。如果值为 Unicode 字符,需要为字符编码。如果值为二进制数据,则需要使用 BASE64 编码。domain指定Cookie所属域名,默认是当前域名指定Cookie在哪个路径(路由)下生效,默认是 '/'。如果设置为 /abc,则只有 /abc 下的路由可以访问到该Cookie,如:/abc/read。maxAgecookie 失效的时间,单位秒。如果为整数,则该Cookie在 maxAge 秒后失效。如果为负数,该Cookie为临时Cookie,关闭浏览器即失效,浏览器也不会以任何形式保存该 cookie 。如果为 0,表示删除该Cookie,默认 -1。
比expires好用。expires过期时间,在设置的某个时间点后该Cookie就会失效。一般浏览器的Cookie都是默认储存的,当关闭浏览器结束这个会话的时候,这个Cookie也就会被删除secure该Cookie是否仅被使用安全协议传输。安全协议有 HTTPS,SSL等,在网络上传输数据之前先将数据加密。默认为false。当 secure 值为 true 时,Cookie在 HTTP 中是无效,在 HTTPS 中才有效。Cookied如果给某个Cookie设置了 httpOnly 属性,则无法通过 JS 脚本 读取到该 cookie 的信息,但还是能通过 Application 中手动修改Cookie,所以只是在一定程度上可以防止 XSS 攻击,不是绝对的安全
2、认识Session
Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。Session是另一种记录服务器和客户端会话状态的机制;Session是基于Cookie实现的,Session 存储在服务器端,SessionId会被存储到客户端的Cookie中。
Session认证流程:用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的Session。请求返回时将此Session的唯一标识信息SessionID 返回给浏览器,浏览器接收到服务器返回的SessionID 信息后,会将此信息存入到 Cookie中,同时Cookie记录此SessionID 属于哪个域名。当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从Cookie中获取SessionID,再根据SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到Session证明用户已经登录可执行后面操作。根据以上流程可知,SessionID是连接Cookie和Session的一道桥梁,大部分系统也是根据此原理来验证用户登录状态。
3、Cookie和Session区别:
(1)Session保存在服务端,Cookie保存在客户端。
(2)因为Cookie存在客户端,用户可以看见进行编辑伪造,所以安全性低。
(3)Session对象是在服务器内存中的,而基于窗口的Cookie是在客户端内存中的。
(4)Cookie不是很安全,别人可以分析存放在本地的Cookie,进行Cookie欺骗。
关于Cookie和Session的区别,本文就讲到这里了,大家都理解了吗?更多相关文章,尽在博学谷资讯栏目,感兴趣的朋友可以关注一下。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
PHP属于前端还是后端?PHP是什么语言?
PHP属于前端还是后端?PHP是什么语言?众所周知,PHP是一种简单的动态脚本语言,它的性能十分高,独立于架构,且还可以移植。而关于PHP属于前端还是后端的界定一直很模糊,下面我们来仔细分析PHP语言的特性,判断它到底属于前端还是后端。
23208
2019-10-21 09:12:31
PHP命令行下的11个常用命令介绍
本文整理了PHP命令行下的11个常用命令,下面介绍给大家,它们分别是php -m、php -v、php --ini、php -h、php --info、php --rf <name>、php --rc <name>、php --re <name>、php --ri <name>和关于命令行脚本的开发。感兴趣的朋友,就跟着小编一起来看看吧!
8317
2019-11-18 16:59:24
PHP开发工程师招聘有哪些要求?
为什么说PHP是世界第一的语言呢?作为许多小型网站的开发语言,PHP语言在社区和电商领域的应用极为广泛。根据许多大型网络招聘平台的统计,目前PHP开发工程师的人才缺口巨大,其一线城市的薪资待遇也基本在15K起步。讲到这里,相信大家都会好奇PHP开发工程师招聘有哪些要求呢?下面我们来看看目前招聘方对于PHP开发岗位工作内容和掌握技能的具体要求。
6829
2020-01-13 12:02:41
掌握PHP开发技能需要学习哪些知识?
PHP作为一种开源的脚本语言,适用于Web开发领域。因此,如果能够熟练掌握PHP开发技能,你就能真正掌握互联网系统架构设计思想,还能实现对门户网站、商城系统、办公系统等项目进行系统性能调优。那么掌握PHP开发技能需要学习哪些知识?html5、Css3、 MySQL数据库、移动端开发框架等等。下面我们来详细看看PHP开发的学习内容。
6875
2020-06-11 17:11:43
PHP从入门到精通需要多长时间?
PHP从入门到精通零基础参加PHP培训班一般要学习6个月左右,有基础可能更快一些,学习周期长短因人而异,要结合自己的实际情况制定学习计划,学习过程中保证学习效果,以目标为导向。
3391
2021-02-25 14:01:13