通俗易懂解释什么是网页Cookies

cookies 在网页应用上有着非常广泛的用途。比如说,线上购物网站就需要依赖 cookies 来判断用户的身份,才能向用户展示可能感兴趣的产品,或者记录用户的购物车。

接下来我们将一步一步慢慢讲解什么是 cookies,以及其他配套的其他概念。

HTTP 协议

HTTP 协议的全称为 HyperText Transfer Protocol,被用来进行网页数据的传输。比如说,今天我们打开一个网页,这个网页包含了许多文件:

  • html 文件
  • css 文件
  • js 文件
  • 静态图片等等

那么我们的浏览器就会发送 HTTP 请求给服务器,接着服务器就会根据 HTTP 请求的内容返回相应的文件。

无状态的 HTTP 协议 (stateless)

我们之所以需要使用 cookies 来辨识用户,是因为我们平常上网时所使用的 HTTP 协议是无状态的(stateless)。也就是说 HTTP 请求只包含了当前请求的信息,而对于之前发生的 HTTP 请求一无所知。简单来说,对于每个 HTTP 请求而言,都是如初恋一般懵懂。

因此问题来了,网站要如何才能知道发送这个 HTTP 请求的人是谁?当然我们可以通过 IP 地址来判断是否为同一个人,但是这个方法有很大的局限性。考虑以下因素:

  • 动态IP
    用户每次重新连接网络时,很有可能会被分配一个不同的IP地址。
  • 共享IP
    公司,家庭以及学校通常都是大家共用一个外网IP上网,因此 IP 便无法细分共用一个 IP 上网的人群。至于为什么可以共享一个IP上网,感兴趣的朋友可以搜搜 Network Address Translation。
  • 移动端
    用户拿着手机上网,在学校使用学校网络,去商场蹭免费 Wifi,去公司上班时使用公司 Wifi,在不同的位置都会使用不同的 IP,然而用户却还是那同一个用户。

这里有一个表非常好地列出了 IP 追踪与 cookies 追踪的差异。

这里是引用
图片来源: http://www.woshipm.com/data-analysis/871818.html

既然 IP 追踪这么多限制,那我们用什么来追踪用户?

于是人们开始思考,如果 IP 追踪个人用户的效果这么有限的话,那我们还有没有什么好办法呢?

仔细想想,虽然用户会共享 IP 上网,或是更换地点使用不同的 Wifi 上网,但有一样东西却是不会经常更换的,那就是网络浏览器。那我们就可以在浏览器上面存储关于用户的信息,然后在每一个 HTTP 请求里都带上这些信息。如此一来,网站就能通过 cookies 里的信息来判断当前用户的状态。

cookies 简易原理图:

在这里插入图片描述

Cookies 的隐私隐患

欧盟的法律规定,如果网站会搜集用户的 cookies,则必须明确告知用户。

这么做的原因是因为,滥用 cookies 会带来隐私问题。由于 cookies 的作用就是让网站可以辨认出你是谁,那么网站也可以搜集所有关于你的信息,包括你访问了哪些网页,搜索了哪些关键字,在每个网页上停留了多久等等信息。

广告商可以通过这些信息向你投放精准广告。比如说,你经常在网上搜索关于 NBA 的新闻,那么你就有很大的机会见到诸如篮球鞋,篮球衣,篮球训练营之类的广告。这也是 cookies 的功劳。

毫不夸张的说,利用 cookies,网站也可以根据你平时的上网习惯,推测出你的性别,收入,职业,以及你的健康情况。随着大数据技术的进步,网站能够开始拼凑出一个真实的你。

想想看如果这些数据落入的不法之徒的手上会有什么后果?精准的诈骗手段?或者是毫无止境的推销电话,广告邮件等等。

因此,立法限制 cookies 的使用范围是很有必要的,用户也很有必要了解 cookies 可能带来的隐患,才能够更好地保护自己。这也是我写这篇博文的目的,希望能够让大家通俗易懂地了解 cookies。文章不严谨之处,还请多多包涵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值