在线客服
扫描二维码
下载博学谷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开发要选择Laravel框架?
程序员在使用框架开发程序的时候,可以保持一致性,而且工作会更加灵活。那么在为什么PHP开发中,大多数人要选择Laravel框架呢?答案很简单,当然是因为使用Laravel框架有很多好处,比如开箱即用的用户身份验证,约定优于配置的方法,轻松使用的电子邮件功能等等,Laravel框架的优势是显而易见的。下面小编将深度解析Laravel框架,为大家详细分析一下Laravel框架的优势。
6769
2019-12-04 16:58:28
PHP培训要多少钱?有什么收费标准?
如今市面上规模较大的PHP培训机构都在一万到两万之间,黑马程序员PHP培训2万左右,这些费用对于大部分刚毕业的学生来说是比较困难的,但是想要找到靠谱的PHP培训机构就必须要结合自身的经济情况以及学习能力进行选择,不能贪图学费一时便宜选择不知名的小机构,最后学不到东西不仅浪费了钱还浪费了宝贵的机会。
10066
2019-12-18 14:59:58
新手如何快速学习PHP语言?
接触互联网时间越长,就会越来越觉得学习一门编程语言多么重要,PHP应用广泛,而且入门简单,是很多编程学习首选语言,所有的初学者共同面临的问题是:那怎么样才能学好PHP语言。
8221
2020-02-27 14:22:11
PHP架构师完整进阶路线规划
PHP架构师可以说是站在开发技术金字塔尖的IT工程师,所以要从一名普通的程序员进阶成为PHP架构师,光凭盲目的努力远远不够,还需要科学地规划学习内容和成长路线。下面小编为大家准备了PHP架构师完整进阶路线规划,一起来看看吧!
7486
2020-07-31 11:04:20
PHP从入门到精通需要多长时间?
PHP从入门到精通零基础参加PHP培训班一般要学习6个月左右,有基础可能更快一些,学习周期长短因人而异,要结合自己的实际情况制定学习计划,学习过程中保证学习效果,以目标为导向。
4527
2021-02-25 14:01:13
