在线客服
扫描二维码
下载博学谷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的就业前景到底怎么样。
7006
2019-09-25 18:28:56
PHP开发工程师招聘有哪些要求?
为什么说PHP是世界第一的语言呢?作为许多小型网站的开发语言,PHP语言在社区和电商领域的应用极为广泛。根据许多大型网络招聘平台的统计,目前PHP开发工程师的人才缺口巨大,其一线城市的薪资待遇也基本在15K起步。讲到这里,相信大家都会好奇PHP开发工程师招聘有哪些要求呢?下面我们来看看目前招聘方对于PHP开发岗位工作内容和掌握技能的具体要求。
6972
2020-01-13 12:02:41
PHP开发发展前景如何?较其他语言有哪些优势?
最近看到网上有同学在讨论学PHP发展前景如何?好不好找工作,较其他语言有哪些优势?不要相信网络上说互联网寒冬,PHP待遇差,工作饱和了等等谣言,只要技术过硬,就不必担心被行业淘汰,能力决定未来。
7071
2020-02-13 17:25:25
PHP8的新特性有哪些?
还有几个月,PHP8就要在2020年11月26日发布了。作为一个全新的升级版本,PHP8做出了许多的重大调整和改变。相信大家都迫不及待想了解,PHP8的新特性有哪些?本文为大家总结归纳了PHP8新特性的一些亮点,一起来看看吧!
6485
2020-06-26 11:46:35
PHP架构师完整进阶路线规划
PHP架构师可以说是站在开发技术金字塔尖的IT工程师,所以要从一名普通的程序员进阶成为PHP架构师,光凭盲目的努力远远不够,还需要科学地规划学习内容和成长路线。下面小编为大家准备了PHP架构师完整进阶路线规划,一起来看看吧!
6308
2020-07-31 11:04:20