在线客服
扫描二维码
下载博学谷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编程技术容易学吗?其实学新知识只要你够努力有恒心和毅力,就会发现世上无难事只怕有心人。当然啦学知识,永远不会有容不容易这一说,别人提供了好的方法,只有加上自己的用心才能有结果。
10038
2019-07-03 19:28:36
现在学Java好还是PHP好?哪个更有发展前途?
现在学Java好还是PHP好?相信这么问的人,一定是没什么基础的编程小白。其实大家要首先明确一点,编程语言之间的学习并没有优劣之分,只要大家能熟练掌握其中一个,都会有不错的发展前途。不过就现在的应用领域来讲,Java确实是目前流行得最广的编程语言。下面可以看看Java和PHP两者的对此分析。
8371
2019-11-14 11:43:47
PHP培训要多少钱?有什么收费标准?
如今市面上规模较大的PHP培训机构都在一万到两万之间,黑马程序员PHP培训2万左右,这些费用对于大部分刚毕业的学生来说是比较困难的,但是想要找到靠谱的PHP培训机构就必须要结合自身的经济情况以及学习能力进行选择,不能贪图学费一时便宜选择不知名的小机构,最后学不到东西不仅浪费了钱还浪费了宝贵的机会。
8992
2019-12-18 14:59:58
PHP7.4新增十大特性总结
不久前,PHP7.4作为PHP脚本语言的最新功能发布,相信大家对此或多或少都已经有所了解了。本文将为大家总结一下PHP7.4新增的十大特性,分别是支持从 __toString() 方法抛出异常;类型化属性的支持;弱引用;箭头函数的支持;预加载;新的自定义对象序列化机制;合并分配运算符;数组表达式中的展开运算符;为引用提供的反射以及协变量返回和协变量参数。下面我们一起来看看新特性的详细总结。
7010
2020-01-08 14:46:52
PHP开发发展前景如何?较其他语言有哪些优势?
最近看到网上有同学在讨论学PHP发展前景如何?好不好找工作,较其他语言有哪些优势?不要相信网络上说互联网寒冬,PHP待遇差,工作饱和了等等谣言,只要技术过硬,就不必担心被行业淘汰,能力决定未来。
7359
2020-02-13 17:25:25