当前位置: 首页 > news >正文

【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))

Host

表示服务器主机的地址和端口号image.png|449
URL 里面不是已经有 Host 了吗,为什么还要写一次?

  • 这里的 HostURL 中的 IP 地址、端口什么的,绝大部分情况下是一样的,少数情况下可能不同
  • 当前我们经过某个代理进行转发。过程中,URL 中的 IP 指向的是代理服务器的 IPHost 中的 IP 指向的是最终目标的地址

Content-Length/Content-Type

这俩都和 body 密切相关,如果你这个数据包没有 body,也就不会有这两个字段

  • Content-Length 表示 body 中的数据长度
  • Content-Type 表示 body 中的数据格式

通过这个长度,来处理“粘包问题”。HTTP 底层也是基于 TCP。连续传输多个 HTTP 数据报,此时接收方这边的接收缓冲区里面就会积累多个包的数据,应用程序在读取这些数据的时候就需要明确包之间的边界

  • 如果是没有 body 的请求/响应,直接使用空行作为分隔符
  • 如果有 body,空行就不是结束标记了,从空行开始来读取 bodybody 要读多长就取决于 Content-Length。读完之后,这个包就结束了

body 里面可以传输很多种格式,程序员也可以自己约定任意的格式,但是有些格式是非常常见的:
请求中:

  1. application / json

    • body 就是 json
  2. application/x-www-form-urlencoded

    • 称为 form 表单
    • 通过 HTML 中的 form 标签构造出来的一种格式。这个格式的特点,认为是把 query string 放到 body 中了
  3. multipart /form-data

    • 上传文件时使用的
    • 第二种格式也是可以的

响应中:

  1. text / plain,纯文本
  2. text / html,html
  3. text / csss,css
  4. application / javascript,js
  5. application / json
  6. image / png
  7. image / jpg

[!quote] 抓的包是灰色的

  • 由于浏览器和服务器之间要进行多次网络交互,整体的过程是比较低效的
  • 为了提升效率,就会把一些固定不变的内容在浏览器本地的机器硬盘上进行缓存(css、图片、js 很少发生改变)
  • 保存到硬盘上之后,后续再请求,就可以直接从硬盘上读取数据,减少了网络交互的开销
  • 抓到硬盘上的数据,就是灰色的

使用 Ctrl+f,强制刷新,就可以不读取缓存,直接读取服务器数据

User-Agent(简称 UA)

image.png

  • 32 位系统支持的最大内存为 4GB
  • 这块部分主要就是操作系统的信息和浏览器的信息。描述了用户在使用什么样的设备在上网

上古时期,UA 是非常关键的部分,不同用户使用的上网的设备差异很大(当年计算机发展日新月异),在同一个时间段内,新的和旧的会同时存在

  1. 最老的浏览器,只能显示文本
  2. 之后能显示图片
  3. 能支持 js
  4. 支持 flash 等动画效果

如果你是一个程序员,你要写一个网站,你写的网站是否要使用新的特性呢?

  • 使用新特性,佬的设备就无法正常打开
  • 不使用新特性,你这个网站就打不过竞争对手
    我们就可以借助 UA 来解决上述问题。UA 里面记录了系统和浏览器的信息,服务器就可以针对此时的 UA 信息进行判定
  • 如果用户用的是很老的设备,返回的页面就不包含新的特性,确保这个页面能正常访问
  • 如果用户用的是新的设备,返回的页面就包含新特性,确保这个页面体验足够好

随着时间推移,浏览器现在都差不多了,UA 好像无用武之地了?

  • 其实仍然很有用
    现在的市面上上网的设备存在这两类:
PC屏幕大更宽
手机屏幕小更窄
对应的返回的页面布局就应该有差异。UA 里面包含了系统信息,就可以判定系统是 PC 的还是移动端的,此时就可以根据这个信息来返回不同的页面了

使用手机浏览器的时候,很多手机浏览器都有一个功能——“手动修改 UA”,手动把 UA 改成 PC 端的 UA,这样就能访问电脑端的网页了


响应式布局

给 PC 端维护一套代码,给移动端维护一套代码,搞两套代码有点麻烦,并且手机尺寸区别也很大,还有平板什么的。前端后来提出了解决上述问题的技术方案——“响应式布局

通过一套代码,适应不同尺寸的显示器。CSS3 提供了一套特性——“媒体查询”,可以感知到当前屏幕的尺寸,根据不同的尺寸,应用不同的样式

所以现在也有越来越多的网站,不再依赖 UA 来进行区分了

User-Agent 的故事: https://zhuanlan.zhihu.com/p/398807396

相关文章:

【HTTP】请求“报头”(Host、Content-Length/Content-Type、User-Agent(简称 UA))

Host 表示服务器主机的地址和端口号 URL 里面不是已经有 Host 了吗,为什么还要写一次? 这里的 Host 和 URL 中的 IP 地址、端口什么的,绝大部分情况下是一样的,少数情况下可能不同当前我们经过某个代理进行转发。过程中&#xf…...

【刷题日记】43. 字符串相乘

43. 字符串相乘 其实就是大数乘法题,这道题用草稿纸演练一下,其实很好找到方法,模拟大数乘法即可。需要注意的是进位和迭代值,还有注意向下取整和去除前导0(容易遗漏)。去除前导0的时候还要注意如果全是0&…...

Verilog学习之旅~

记录Verilog的学习日常~ 第一阶段:牛客网刷题 1.Verilog快速入门 基础语法 VL1:四选一多路器:case语句、条件表达符; VL2:异步复位的串联T触发器:T触发器的基本功能及代码实现、异步复位的概念; VL3:奇偶校验:缩…...

linux之mysql安装

1:mysql安装包下载 下载地址 可私信我直接获取安装包 2:linux下wget命令下载 下载地址 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz3:手动安装 将自己的安装包上传到对应的位置 解压 压缩包 使用命令 tar -zxvf mysql-5.7…...

单身狗的逆袭之路之开发相亲交友系统

在这个充满机遇与挑战的时代,单身人士渴望找到属于自己的幸福。然而,在忙碌的工作与生活中,他们往往难以抽出时间去拓展社交圈。相亲交友系统的出现,无疑是为这些“单身狗”提供了一个逆袭的机会。通过相亲交友系统,用…...

【Spring】IocDI详解(6)

本系列共涉及4个框架:Sping,SpringBoot,Spring MVC,Mybatis。 博客涉及框架的重要知识点,根据序号学习即可。 有什么不懂的都可以问我,看到消息会回复的,可能会不及时,请见谅!! 目录 本系列共…...

Redis系列之底层数据结构SDS

Redis系列之底层数据结构SDS 实验的环境 Redis 6.0VSCode 1.88.1 什么是SDS? SDS:Simple Dynamic String,翻译为简单动态字符串。SDS是一种用于存储二进制数据的数据结构,具有动态扩容的特点,代码位于src/sds.h和src/sds.c …...

【STM32】esp8266连接wifi

1.配置stm32cubemx 使用串口二接收esp8266的数据,单片机接收,使用串口1将数据发送给串口助手 串口2波特率设置74880,串口1设置115200 在初始化的时候需要将复位引脚拉低20ms,然后再拉高20ms, 设置GPIOB的输出模式 对PB12做输出处理 2.…...

网络运维故障处理

本篇纯是之前的工作经验做一个分享,大家看个热闹就好。 1.突然的断网,在上家上班的时候,有一天突然下午厂区内开始出现大面积网络卡顿,teams,outlook不好使等情况,且网盘也上不去,所以开始排查…...

C++第十一节课 new和delete

一、new和delete操作自定义类型 new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数&#xff08;new会自动调用构造函数&#xff1b;delete会调用析构函数&#xff09; class A { public:A(int a 0): _a(a){cout <&l…...

【爱给网-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…...

苹果为什么不做折叠屏手机?

苹果为什么不做折叠屏手机&#xff1f;折叠屏手机在最近这些年里边&#xff0c;可以说是市场的一个主要在手机上的增长点。你像华W最近推出这个三折叠手机&#xff0c;引起了整个市场的轰动。 可是&#xff0c;为什么苹果到今天为止不为所动&#xff0c;还在那不停地在现在的这…...

目标检测经典算法的个人理解

one stage 1、RCNN -> Fast-RCNN&#xff1a;RPN部分从用传统的算法 -> 用深度学习网络来实现。 2、Fast-RCNN -> Faster-RCNN&#xff1a;从先选region再求Feature -> 先求Feature再选region。 two stage 1、SSD&#xff08;2016&#xff09;&#xff1a;VGG做…...

FewShotChatMessagePromptTemplate 和 FewShotPromptTemplate区别

FewShotChatMessagePromptTemplate 和 FewShotPromptTemplate 都是 LangChain 框架中用于少样本学习的提示模板&#xff08;Prompt Template&#xff09;&#xff0c;但它们在设计和用途上存在一些区别。 FewShotChatMessagePromptTemplate 用途&#xff1a;主要用于聊天场景…...

《程序猿之设计模式实战 · 策略模式》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…...

deepinlinux-v23用deepinunioncode初始c例子

deepinlinux-v23用deepinunioncode初始c例子 # deepinunioncode 新建duc工程cmake模版&#xff0c;开局提示 No CMAKE_CXX_COMPILER could be found错误记录 需要duc 左下角磁轮设置 设置cmake和gcc g的文件&#xff0c;如果本机装过了&#xff08;apt install gc…...

前端框架对比选择:如何在众多技术中找到最适合你的

引言 在现代Web开发中&#xff0c;前端框架的选择对项目的成功与否至关重要。随着技术的不断发展&#xff0c;市面上涌现出多种前端框架&#xff0c;每种框架都有其独特的特点、优缺点以及适用场景。本文将对当前主流的前端框架进行详细对比&#xff0c;帮助开发者在选择时做出…...

数据结构—(java)反射,枚举,lambda表达式

文章目录 反射反射的定义&#xff1a;反射相关的类&#xff1a;反射相关的方法&#xff1a;反射示例&#xff1a;获取Class类对象创建指定类的对象反射私有属性&#xff1a;反射私有方法&#xff1a;反射私有的构造方法 枚举枚举的意义枚举类的实现枚举类的使用&#xff1a;Enu…...

机器学习(西瓜书)第 14 章 概率图模型

14.1 隐马尔可夫模型 机器学习最重要的任务&#xff0c;是根据一些已观察到的证据&#xff08;例如训练样本&#xff09;来对感兴趣的未知变量&#xff08;例如类别标记&#xff09;进行估计和推测。概率模型&#xff08;probabilistic model&#xff09;提供了一种描述框架&a…...

Python异步编程-asyncio详解

目录 asyncio简介示例什么是 asyncio?适用场景API asyncio的使用可等待对象什么是可等待对象&#xff1f;协程对象任务对象Future对象 协程什么是协程&#xff1f;基本使用运行协程 Task什么是 Task&#xff1f;创建 Task取消 TaskTask 异常获取Task 回调 TaskGroup什么是 Tas…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...