【HTTP】请求“报头”,Referer 和 Cookie
Referer
描述了当前这个页面是从哪里来的(从哪个页面跳转过来的)
浏览器中,直接输入 URL/点击收藏夹打开的网页,此时是没有 referer
。当你在 sogou
页面进行搜索时,新进入的网页就会有 referer
有一个非常典型的用途:广告中
- 在搜索广告中,都是按照点击计费的,双方都要进行次数统计
- 一个公司可能会在很多平台上投放广告,要知道这个点击是从哪个平台上来的,就可以看
referer
referer
是否会被篡改呢?
这种情况在十年前左右是非常常见的,运营商(中国移动/中国联通/中国电信)进行篡改。
-
有动机
- 他们自己有广告系统,就可以把
referer
改成他们自己广告系统的referer
(比如,明明是从搜狗进入的改为从他们的网站进入的)
- 他们自己有广告系统,就可以把
-
有能力
- 运营商提供了通信设施,在对应的路由器/交换机上部署程序,让程序解析
HTTP
数据,把referer
改成自己的就可以了
- 运营商提供了通信设施,在对应的路由器/交换机上部署程序,让程序解析
这种行为叫“运营商劫持”。当年,互联网那个还是个新鲜东西,对应的法律还不是特别的完备。官司当然能打,大了官司也肯定能打赢,但是中间花的时间一定会非常长(之前没有可以参考的法律条文或者是相关案例),再加上运营商手下也有强悍的法务团队,进行反复拉扯。赢了官司,输了买卖。
当时百度就联合搜狗、360 这些广告平台,一起去打官司。光法律还不够,在技术上还要进行反制,让你这样的劫持操作不能继续下去。这时候,HTTPS
就登场了。
HTTPS
中的 S
就是 SSL
(网络中用于加密的协议),加密就能把 header
和 body
进行加密,网络上传输就是密文了。运营商想要修改,就得先破解,就算你能解密,你也篡改不了(一旦修改就能被用户的浏览器感知到)
当时这些广告平台就纷纷升级成了 HTTPS
,后续越来越多的网站都引入了 HTTPS
。直到今天,现在网络上 HTTPS
的网站是绝对的主流,反而纯 HTTP
的网站很少见了
Cookie
非常重要的报头中的属性,要更复杂一些。程序员自定义的键值对
浏览器与持久化存储
Cookie
本质上是一个浏览器这边,进行本地持久化存储(数据要存储到硬盘中)数据的机制
浏览器作为电脑上的程序,能否直接读写本地磁盘文件呢?
- 可以,因为系统提供了 API 用来操作文件,作为一个程序当然可以调用这些 API 来操作了
浏览器上运行的网页,能否通过浏览器提供的 API 来读写本地磁盘文件呢?
- 理论可行,但浏览器禁止了这种做法(浏览器并没有给网页提供这样的 API),一个网页不能直接读写你的硬盘文件
- 禁止这种做法是为了安全性。随手一点,网页就打开了。万一打开的是恶意网站,此时人家通过网页直接把你电脑上的所有学习资料都给你删了,必然会造成重大损失
但是确实有些网站,是需要把一些信息保存到浏览器这边,进行持久保存的。比如当前登录用户的身份信息。浏览器退而求其次,给网页提供了这样的 API,能够有限度(按照键值对的格式)的存储数据,而不能随意访问文件系统
Cookie 的作用
Cookie
就是这样的一种存储机制,还有 LocalStorage
、indexDB
。他们都是浏览器提供的网页可以存储数据的机制
HTTP
请求中的 Cookie
字段,就是把本地存储的 Cookie
信息发送到服务器这边。HTTP
响应中会有一个 Set-Cookie
字段,就是服务器告诉浏览器你要在本地保存哪些信息。这些都是键值对结构,程序员自定义的
Cookie
的作用就非常类似于去医院看病的流程
- 先去挂号,办理一个就诊卡
- 来到了脑科,见到医生,医生对我说的第一句话:先刷下就诊卡。就诊卡上面保存着我这边的一些患者信息,刷卡之后,医生就一目了然了。医生让我去做个 B 超
- 来到了对应科室,医生第一句话还是:先刷下就诊卡。刷卡之后,医生就看到了我要做什么检查
- 回到脑科,拿着单子给医生看结果,医生见到我们还是要我们刷就诊卡。之后医生就给我们开药
- 来到药房
- 来到护士站,看就诊卡,配药打针
- 每次来到一个新的科室,都可以认为是客户端给服务器发起了一个新的请求
- 每次刷的就诊卡,就相当于是使用
Cookie
中的信息,来让服务器对我这个客户端有了一个清楚的认识- 就诊卡本身,就是客户端手里拿着的持久存储数据的机制,就是
Cookie
几个重要结论
1. Cookie
从哪里来
服务器返回给浏览器的,通常都是首次访问/登陆成功之后
2. Cookie
到哪里去?
Cookie
会存储在浏览器本地主机的硬盘上,后续每次访问服务器都会带上 Cookie
。不同的客户端,保存的 Cookie
是不同的。即使是一个主机,使用不同的浏览器,Cookie
大概率也不同
3. Cookie
中存什么?
键值对格式的数据。这里的内容都是程序员自定义的,和 query string
一样,外人无法知晓。不同网站的 Cookie 都是不一样的(不是一家的,键值对格式就不一样)
4. Cookie
在浏览器这边如何组织?
在硬盘本地保存,是按照不同的域名为维度分别存储。你的浏览器访问百度,有一组 Cookie
;访问搜狗,也有一组 Cookie
。他们彼此之间是隔离的,不会相互影响
Cookie
的用途是什么?
用来在客户端保存数据,其中最主要的是保存用户的身份标识,这样服务器就可以通过标识来区分用户了。
一些其他的业务数据一般不会存储到 Cookie
中,Cookie
随时可以删除掉,把业务数据存储在服务器,通过 Cookie
中的身份标识找到对应的数据(上面开的药,信息就不会存在就诊卡中,而是保存在医院的服务器中,可以通过就诊卡中的数据在医院服务器中找到要的信息)
浏览器中的账号密码不会在
Cookie
中保存,Cookie
是要传输给服务器的。一般浏览器保存的密码都是明文密码,明文密码放到Cookie
中当然不合适。虽然有HTTPS
能加密,但HTTPS
是侧重于“不能被篡改”,而不是“不能被解密”
一个 HTTP
请求中,有以下部分可以携带程序员自定义的数据:
query string
Cookie
body
URL
的path
path
之后使用Spring
搭建网站,就是围绕上述几个部分,展开进一步的编程
相关文章:

【HTTP】请求“报头”,Referer 和 Cookie
Referer 描述了当前这个页面是从哪里来的(从哪个页面跳转过来的) 浏览器中,直接输入 URL/点击收藏夹打开的网页,此时是没有 referer。当你在 sogou 页面进行搜索时,新进入的网页就会有 referer 有一个非常典型的用…...
使用sqoop报错
报错一: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf 这个错误表示在执行与 Hive 相关的操作时,程序无法找 org.apache.hadoop.hive.conf.HiveConf 这个类。这个类是 Hive 的配置类,它用…...
一个简单的基于C语言的HTTP代理服务器的案例
一个简单的基于C语言的HTTP代理服务器的案例。这个代理服务器可以接收客户端的HTTP请求,并将请求转发到目标服务器,然后将服务器的响应返回给客户端。 1. 代理服务器的主要代码 #include <stdio.h> #include <stdlib.h> #include <stri…...
Linux学习-Ansible(二)
基本配置 #主机清单文件 [rootharbor ansible]# cat hostlist [web] 192.168.29.161 192.168.29.162 [es] 192.168.29.171 192.168.29.172 192.168.29.173 #查看所有被管理的主机 [rootharbor ansible]# ansible all --list-hostshosts (5):192.168.29.161192.168.29.162192.1…...
[SDX35]SDX35硬件使用512MB内存,实际只初始化256MB问题分析及解决方案
SDX35 SDX35介绍 SDX35设备是一种多模调制解调器芯片,支持 4G/5G sub-6 技术。它是一个4nm芯片专为实现卓越的性能和能效而设计。它包括一个 1.9 GHz Cortex-A7 应用处理器。 SDX35主要特性 ■ 3GPP Rel. 17 with 5G Reduced Capability (RedCap) support. Backward compati…...
S3C2440中断
一、中断执行的流程 soc中断的执行流程 1、中断源发生中断请求 2、CPU检查该中断是否被屏蔽,以及总中断是否被屏蔽 3、考察中断优先级 4、保护现场 5、执行中断服务函数 6、恢复现场 二、中断初始化 1、设置中断模式(INTMOD)寄存器(…...
编译成功!QT/6.7.2/Creator编译Windows64 MySQL驱动(MinGW版)
参考 GitHub - thecodemonkey86/qt_mysql_driver: Typical symptom: QMYSQL driver not loaded. Solution: get pre-built Qt SQL driver plug-in required to establish a connection to MySQL / MariaDB using Qt. Download qsqlmysql.dll binaries built from official Qt …...
SQLyou基础用法讲解
文章目录 SQLyog 基础知识讲解 1. 数据定义语言 (DDL)创建数据库创建表修改表删除表 2. 数据操作语言 (DML)插入数据批量插入数据更新数据条件更新删除数据条件删除 3. 数据查询语言 (DQL)查询数据查询所有数据使用排序使用聚合函数分组查询使用 HAVING 子句 4. 事务5. 索引创建…...
Can‘t get Kerberos realm
近期封装Ozone客户端,需要走kerberos登陆,遇到了一个问题,花了很长时间解决。记录一下,跟网上能搜到的解决方案不大一样。 先看有问题的代码 Configuration config new Configuration();ConfigurationUtils.setHadoopConfig(conf…...

[python]从零开始的PySide安装配置教程
一、PySide是什么? PySide 是 Qt for Python 项目的一部分,它提供了与 PyQt 类似的功能,使开发者能够使用 Python 编程语言来构建基于 Qt 的图形用户界面 (GUI) 应用程序。PySide 是由 Qt 公司官方维护的,而 PyQt 则是由第三方开发…...

LeetCode[中等] 74.搜索二维矩阵
给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…...

overleaf如何下载论文的pdf
用overleaf写完英文论文后,要将论文保存为PDF格式 点击图片中的下载按钮 然后选择一个路径保存论文的PDF格式即可。...

Java 每日一刊(第13期):this super static
“优秀的代码不仅仅是给机器看的,更是给人看的。” 前言 这里是分享 Java 相关内容的专刊,每日一更。 本期将为大家带来以下内容: this 关键字super 关键字static 关键字 this 关键字 this 关键字是 Java 中最常见的关键字之一…...
关于一些Spring的配置的作用
文章目录 spring.profiles.activejmx.default-domainmain.allow-bean-definition-overridingmain.allow-circular-referencescloud.nacoscloud.nacos.configcloud.nacos.shared-configsmvc.pathmatch.matching-strategy spring:profiles:active: ${config.profile}# include…...
利用Python与Ansible实现高效网络配置管理
利用Python与Ansible实现高效网络配置管理 在当今复杂多变的网络环境中,自动化配置管理工具成为了IT运维团队不可或缺的工具。Python以其强大的编程能力和丰富的库支持,结合Ansible这一流行的自动化运维工具,能够极大地提升网络配置管理的效…...
JDBC技术在不同数据库系统中的兼容性及Java数据库交互技术概览
目录 1. JDBC技术在不同数据库系统中的兼容性 2. 除了JDBC,还有哪些技术可以实现Java与数据库的交互? 3. 结论 在Java应用程序中,数据库交互是一个核心功能。Java Database Connectivity (JDBC) 是实现这一功能的标准技术之一。然而&#…...

双击热备 Electron网页客户端
安装流程: 1.下载node.js安装包进行安装 2.点击Next; 3.勾选,点击Next; 4.选择安装目录 5.选择Online 模式 6.下一步执行安装 。 7.运行cmd,执行命令 path 和 node --version,查看配置路径和版本 8.Goland安装插件node.js 9.配置运行…...

数据中台系统产品原型RP原型Axure高保真交互原型 源文件分享
在数字化时代,数据已经成为企业最宝贵的资产之一。为了更好地管理和利用这些数据,这边为大家整理了一套数据中台Axure高保真原型。这套原型致力于为企业提供全方位的数据服务,助力企业实现数据驱动的创新发展。 下载及预览地址:h…...

论文阅读笔记:Sapiens: Foundation for Human Vision Models
Sapiens: Foundation for Human Vision Models 1 背景1.1 问题1.2 目标 2 方法3 创新点4 模块4.1 Humans-300M数据集4.2 预训练4.3 2D位姿估计4.4 身体部位分割4.5 深度估计4.6 表面法线估计 5 实验5.1 实现细节5.2 2D位姿估计5.3 身体部位分割5.4 深度估计5.5 表面法线估计5.6…...

【学术会议:中国厦门,为全球的计算机科学与管理科技研究者提供一个国际交流平台】第五届计算机科学与管理科技国际学术会议(ICCSMT 2024)
您的学术研究值得被更多人看到! 在这里,我为您提供精准的会议推荐,包括计算机科学、管理科技、信息系统、人工智能、供应链管理等领域的国际会议。高效的稿件录用流程和优质的检索服务将确保您的研究成果迅速传播。关注我,寻找与…...

多模态大语言模型arxiv论文略读(九十九)
PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文标题:PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文作者:Junyi Li, Junfeng Wu, Weizhi Zhao, Song Bai, Xiang Bai ➡️ 研究机构…...

Vue+element-ui,实现表格渲染缩略图,鼠标悬浮缩略图放大,点击缩略图播放视频(一)
Vueelement-ui,实现表格渲染缩略图,鼠标悬浮缩略图放大,点击缩略图播放视频 前言整体代码预览图具体分析基础结构主要标签作用videoel-popover 前言 如标题,需要实现这样的业务 此处文章所实现的,是静态视频资源。 注…...
Spring Boot + MyBatis-Plus实现操作日志记录
创建数据库表 CREATE TABLE sys_operation_log (log_id bigint NOT NULL AUTO_INCREMENT COMMENT 日志ID,operation_type varchar(20) NOT NULL COMMENT 操作类型,operation_module varchar(50) NOT NULL COMMENT 操作模块,operation_desc varchar(200) DEFAULT NULL COMMENT …...
QT6.9中opencv引用路径的其中一种设置
RC_ICONSappimage.ico unix|win32: LIBS -L$$PWD/opencv455/vc15/lib/ -lopencv_world455 INCLUDEPATH $$PWD/opencv455/include DEPENDPATH $$PWD/opencv455/include RC_ICONS为指定图标文件,只写图标名appimage.ico,那么一般和pro文件在同一目录…...

Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)
目录 一、源码分析 1.分析闭合 2.分析输出 (1)查询成功 (2)查询失败 (3)SQL语句执行报错 二、第03关 延时注入 1.打开靶场 2.SQL手注 (1)盲注分析 (2…...

SOC-ESP32S3部分:18-串口
飞书文档https://x509p6c8to.feishu.cn/wiki/NqrMw6X8Si6sSqkyPbxcFRxGnid UART全称是通用异步接收器/发送器,ESP32-S3 芯片有 3 个 UART 控制器。每个 UART 控制器可以独立配置波特率、数据位长度、位顺序、停止位位数、奇偶校验位等参数。 串口文档参考…...
符合Python风格的对象(覆盖类属性)
覆盖类属性 Python 有个很独特的特性:类属性可用于为实例属性提供默认 值。Vector2d 中有个 typecode 类属性,bytes 方法两次用到了 它,而且都故意使用 self.typecode 读取它的值。因为 Vector2d 实 例本身没有 typecode 属性,所…...

LVS-DR 负载均衡群集
目录 一、LVS-DR集群 1、LVS-DR 工作原理 2、数据包流向分析 3、LVS-DR 模式特点 二、直接路由模式(LVS-DR) 1、准备案例环境 2、配置负载调度器(101) (1)配置虚拟IP 地址(VIPÿ…...

Elasticsearch创建快照仓库报错处理
创建快照仓库报错: 根据报错提示的信息,问题可能出在 Elasticsearch 的配置中。当你尝试创建一个文件系统(fs)类型的快照仓库时,虽然已经指定了 location 参数,但 Elasticsearch 仍然报错,这通…...
用户配置文件(Profile)
2.4.5 用户配置文件(Profile) 用户配置文件由以下组件构成: 一个运营商安全域(MNO-SD) 辅助安全域(SSD)和CASD Applets 应用程序(如NFC应用) 网络接入应用ÿ…...