Cookie与Session的历史、原理、结构、分类、应用以及区别

Cookie部分

Cookie的历史与原理

Cookie(即“小甜饼”)是一种用于在Web浏览器和Web服务器之间传递信息的技术。Cookie最早由美国的李维·蒙塔利(Lou Montulli)于1994年发明,它是通过在HTTP响应中添加一个Set-Cookie字段来设置的。当浏览器收到此响应时,它将存储这个Cookie,并在后续的HTTP请求中将其发送回服务器。

Cookie的原理非常简单:当用户访问一个网站时,服务器会将一个Cookie发送给用户的浏览器。浏览器会将这个Cookie存储在本地,并在用户下一次访问该网站时将其发送回服务器。通过这种方式,服务器可以记住用户的偏好、登录状态等信息。

Cookie的分类与结构

按照用途,Cookie可以分为 会话Cookie持久Cookie。会话Cookie通常保存在内存中,当用户关闭浏览器时就会被删除。而持久Cookie则会保存在硬盘上,直到过期时间到达或用户手动删除才会被删除。

每个Cookie都由一个名字、一个值、一些元数据(如过期时间、域名、路径等)组成。例如,下面是一个名为“username”的Cookie:

Set-Cookie: username=john; expires=Tue, 11 Jun 2019 00:00:00 GMT; domain=example.com; path=/

这个Cookie的值为“john”,过期时间为2019年6月11日,域名为example.com,路径为根目录。

Cookie的应用

Cookie是Web开发中非常重要的一个概念,它可以用于以下几个方面:

  1. 记住用户的登录状态:当用户登录后,服务器可以将一个持久Cookie发送给浏览器,包含用户的登录凭证。当用户下一次访问该网站时,浏览器会将这个Cookie发送回服务器,服务器可以通过这个Cookie来识别用户并自动登录。

  2. 存储用户的偏好:例如,网站可以保存用户的语言偏好、主题偏好等信息,以便下一次访问时能够提供更好的用户体验。

  3. 跨域访问:由于同源策略的限制,网站A无法直接读取网站B的Cookie。但是,如果两个网站共享同一个父域名,则可以通过设置Cookie的domain属性来实现跨域访问。

  4. 跟踪用户的行为:通过设置Cookie,网站可以跟踪用户的访问记录、购买记录等行为,以便进行数据分析、广告投放等。

参考文献

HTTP Cookies - Mozilla Developer Network
Cookies - W3Schools
HTTP cookies - Wikipedia

PHP服务端设置以及客户端的文件形式及内容

在PHP中,可以使用setcookie()函数来设置Cookie。例如,以下代码会创建一个名为“username”的Cookie,过期时间为7天,值为“john”:

setcookie('username', 'john', time() + 60 * 60 * 24 * 7, '/');

在客户端,Cookie通常以文本文件的形式存储在浏览器的Cookie目录下。例如,在Google Chrome中,Cookie文件通常位于“C:\Users\AppData\Local\Google\Chrome\User Data\Default\Cookies”。

Cookie文件通常以SQLite数据库的形式存储,可以使用SQLite浏览器等工具来查看和编辑Cookie。

例如,以下是一个名为“username”的Cookie的数据:

name: username
value: john
domain: example.com
path: /
expires_utc: 1559692800
is_secure: 0
is_httponly: 0

其中,expires_utc表示过期时间(以UNIX时间戳表示),is_secureis_httponly分别表示是否仅限HTTPS和是否禁止JavaScript访问Cookie。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章