当前位置: 首页 > 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…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​&#xff1a;这篇文章要解决的问题是当前大型语言模型&#xff08;LLMs&#xff09;在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色&#xff0c;但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成&#xff08;RA…...

用js实现常见排序算法

以下是几种常见排序算法的 JS实现&#xff0c;包括选择排序、冒泡排序、插入排序、快速排序和归并排序&#xff0c;以及每种算法的特点和复杂度分析 1. 选择排序&#xff08;Selection Sort&#xff09; 核心思想&#xff1a;每次从未排序部分选择最小元素&#xff0c;与未排…...