cookie


声明:本文转载自https://my.oschina.net/u/3412738/blog/3053558,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

简介

要了解cookie, 先要从HTTP协议说起. 所谓协议, 就要有发起协议的人, 遵守协议的人, 具体来说, 一般就是服务端和客户端, 双方遵照HTTP协议的内容.

HTTP协议有以下特点:

1, 支持客户/服务器模式;

2, 简单快速: 无论是客户端请求还是服务端响应,设置好对应的消息头,方法,消息体,就能够传达给对方,并且双都能理解对方的意思。

3, 灵活: HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记即可。

4, 无连接: 客户端请求服务端,服务端响应完成之后就自动断开连接本次链接。

5, 无状态: 客户端请求服务端,服务端响应完成之后不会记录任何本次连接通信的数据。

当然,HTTP协议远远不止这么多,具体的我们后期再说,有了上面的HTTP协议的知识,我们就要引出我们的cookie了。

上面提到,由于HTTP的无状态特点, 服务端响应完客户端的请求之后, 不记录任何本次连接的通信数据, 这样就造成一个问题, 就是服务端"记不住"客户端的请求, 产生"你是谁"的问题. 就好比大楼里的保安大叔, 每个进入大楼的人都要登记身份, 而且这位保安大叔还记不住人, 导致每个人每次进入大楼都要做一次身份校验, 这样就很费时间,耗费人力了.

那怎么解决这个问题呢? 这里就用到了cookie. 就是服务端在响应完客户端请求的时候, 在返回数据的时候, 给客户端一段数据, 下次客户端请求的时候, 带上这段数据, 这样服务端就知道是"哪个"客户端在请求了. 就好比保安大叔给了你一个小纸条, 上面写着每个人的编号, 下次进入大楼, 只要把小纸条给保安大叔看一下, 他认识上面的字, 就知道你之前来过, 确认了你的身份, 就直接放行了, 免除了再次登记和校验的过程.

OK, 这样一圈下来, 我们知道, cookie就是服务端返回给客户端的一小段数据, 这段数据记录这本次请求的一些信息, 最主要的, 就是一些身份信息. 这样在下次请求的时候带上, 服务端就知道你上一次请求的状态和相关信息, 让请求有了状态, 有了记忆.

很多人在存储一些数据的时候不推荐使用cookie,原因在于每次客户端请求服务端的时候,都会带上cookie信息,cookie虽然通常一个value值只有4K大小,但是量一旦上来就会很费带宽。

基本工作原理

cookie主要是通过报头HTTPHeader来传递数据。也就是在请求头和消息头里面传递数据。Cookie机制定义了两种报头:Set-Cookie报头和Cookie报头。set-cookie存在于服务器响应的消息头中。而cookie则存在于客户端请求的消息头中。

cookie的运行流程如下:

1, 客户端在浏览器的地址栏中键入Web服务器的URL,浏览器发送读取网页的请求。

2, 服务器接收到请求后,产生一个Set-Cookie报头,放在HTTP报文中一起回传客户端,发起一次会话。

3, 客户端收到应答后,若要继续该次会话,则将Set-Cook-ie中的内容取出,形成一个Cookie.txt文件储存在客户端计算机里。

4, 当客户端再次向服务器发出请求时,浏览器先在电脑里寻找对应该网站的Cookie.txt文件。如果找到,则根据此Cookie.txt产生Cookie报头,放在HTTP请求报文中发给服务器。

5, 服务器接收到包含Cookie报头的请求,检索其Cookie中与用户有关的信息,生成一个客户端所请示的页面应答传递给客户端。 浏览器的每一次网页请求,都可以传递已存在的Cookie文件,例如,浏览器的打开或刷新网页操作。

在php中设置cookie有两种方式:

1, setCookie函数的调用

2, session_start函数的调用

这里稍微解释下session_start做的工作,session_start()一旦写上,服务器端就会在服务器上生成一个session_id,并同时向客户端发送set-cookie报头,内容为phpsessid=session_id, 客户端接到响应就会生成cookie文件,也就是session_start里面其实包含了setCookie的操作,只是没有setCookie那么灵活而已。

本文发表于2019年05月24日 12:00
(c)注:本文转载自https://my.oschina.net/u/3412738/blog/3053558,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 1362 讨论 0 喜欢 0

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1