应用层非常重要的协议
1.访问网站(HTTP/HTTPS)
2.手机APP
HTTP报文结构
1)请求
首行
请求头
空行
正文
2)响应
首行(版本号 状态码 状态码描述)
响应头
空行
正文
Referer请求头不是所有的请求都有
在页面跳转的时候,是能够通过 Referer表示该页面是从哪里来的
referer 和浏览器的"回退"功能无关,浏览器的后退不依赖 HTTP 协议.浏览器自生维护了一个"栈"记录访问过程.http 的 referer 主要是用来给服务器看的
一个广告主,投放广告的时候通常会投放多个平台,这些广告平台,都会给这个广告主的网站引流(引流的过程是需要"花钱"的,按点击收费),这个赚钱的能力是非常强的,商业价值高的广告,点击一下就几百块(付出的广告费用都可以赚回来)
一般正常的广告平台,有一系列的"反作弊"算法,识别出"无效点击"有效点击才计费,无效点击不会计费
某个广告主发现,他的网站,一天之内有 1000 次访问,这 1000 次访问有多少是来自 y 搜索引擎?,多少次是来自 x 搜索引擎?
广告主和平台都会进行计算
是否会存在这样的可能,把广告主收到的请求的 referer 改成其他的?
在十年前是有这样的情况的,事情非常多,广告主自己是不会改的,点击次数是一定的他要付的费用是一定的,只不过是付给谁多谁少的事情罢了,总金额不变
这个事情,是运营商搞得鬼(不一定是指三大运营商,更多的是一下比较小的运营商)
你的网络请求走的是运营商路由器的(部署特殊的程序)发现这个请求是一个广告请求,就把HTTP中的 referer 改了,改成他自己的广告平台的 referer
这个就叫"运营商劫持"
法律是滞后的
同样也需要技术上的反制,运营商能篡改,因为 HTTP 协议自身是明文传输的,推荐 HTTPS 当年的 HTTPS 是非常少的 HTTPS 就是在HTTP的基础上引入"加密层",中间的设备/黑客不容易知道数据的内容,也很难篡改了
Cookie
Cookie 中的内容也是键值对
使用 ; 来分割多个键值对
使用 = 分割键值对
Cookie 本质上是浏览器在本地存储数据的一种机制
网站 和 app 是有本质区别的
app / 桌面的程序:本来就有很多数据是在客户端中的
网站: 所有的数据都是来自于服务器的
通过浏览器从服务器获取到网站的数据
获取到的网站的数据和应用程序,是否可能是一些对你电脑产生破坏的程序呢?
网站无人审核,危险性更高一些
浏览器把控安全,浏览器会限制一个网站的权限,浏览器会禁止网站访问你的硬盘,也禁止网站调用你电脑上的其他应用程序,就算是有一个风险的网站,也可以控制风险
如果一个网站希望在你的电脑这边存储一些数据呢?
浏览器也没有一棒子打死,留下方案实现本地存储,Cookie 中的内容,其实是服务器返回给浏览器的,浏览器就会班Cookie 保存到本地(硬盘上)为了安全,不允许网站随意的访问网站,而是只能按照"键值对"的简单方式来存储数据,后续浏览器访问该网站的时候, Cookie 中的数据通过 HTTP 请求报头,带到服务器上
Edge 浏览器也是 chrome 内核
浏览器的发展,天下大势合久必分,分久必合
Cookie 应用场景
Cookie 键值对自定义
经典场景:
通过 Cookie 保存一些没那么重要,但是有用的信息,比如"上次的访问时间"
论坛类网站,会显示"上次访问时间"(当然可以存储在数据库),也可以在 Cookie 中存储(可能会丢失)
Cookie 还有一个经典的场景,保存用户的身份标识
同一个服务器同一时刻要给很多个客户端提供服务,管理多个会话.(服务器里有一个类似于哈希表 结果,key 就是 会话 id, value 就是会话对象)
服务器就会在我登录成功之后给我分配一个"会话"会话对应唯一一个的身份标识,会话 id
服务器就可以根据sessionld 区分当前是哪个用户,避免重复登录了,会话的存活时间,就看具体的业务场景了,对于系统安全性要求越高的场景,会话存活的时间就越短