HTTP协议格式详解之报头(HTTP header)、请求正文(body)
在之前文章中我们已经介绍了HTTP的首行信息,HTTP协议格式详解之首行信息解析-CSDN博客这篇文章中我们继续介绍HTTP协议的报头部分。
一、报头(HTTP header)
a)请求头部(Request Headers):
-
Host:指定服务器的主机名和端口号,用于确定请求的目标服务器。
在一般情况下,HTTP请求中的Host头部和URL中的主机部分是相同的,因为Host头部指定了目标服务器的主机名。但是在一些特殊情况下,Host头部和URL中的主机部分可能会不同:
-
代理服务器(Proxy Server):当客户端通过代理服务器发送请求时,Host头部通常指定的是目标服务器的主机名,而URL中的主机部分则是代理服务器的主机名。这是因为代理服务器会将客户端的请求转发给目标服务器,但Host头部应该指示目标服务器的主机名,以确保服务器正确识别请求的目标。
-
虚拟主机(Virtual Hosting):在共享主机环境下,一台服务器可能托管了多个网站,这些网站共享同一个IP地址。在这种情况下,服务器根据请求中的Host头部来确定应该将请求转发给哪个网站。因此,URL中的主机部分可能是共享主机的IP地址,而Host头部指示的是请求的实际域名。
-
-
User-Agent:标识发送请求的客户端应用程序、操作系统和设备等信息。服务器可以根据User-Agent来确定如何响应请求,比如为不同的浏览器提供不同的页面版本。
-
Accept:指定客户端所能接受的内容类型,通常用于告知服务器客户端支持哪些媒体类型(如HTML、XML、JSON等)。
-
Accept-Language:指定客户端所能接受的自然语言类型,用于告知服务器客户端偏好的语言。
-
Accept-Encoding:指定客户端所能接受的内容编码方式,用于告知服务器客户端支持的内容编码方式(如gzip、deflate等)。
-
Authorization:用于进行身份验证,通常包含了客户端的凭据(例如用户名和密码)或者其他认证信息。
-
Cookie:包含了之前由服务器通过Set-Cookie响应头设置的Cookie信息,用于在客户端和服务器之间维护会话状态。
-
Cookie是由服务器发送到客户端,并存储在客户端的浏览器中的小型数据片段。它用于在客户端和服务器之间存储会话信息或跟踪用户状态,以便在用户访问同一网站时保持持久性和状态。Cookie通常包含了一些键值对的数据,以及一些关于Cookie的属性:
-
名称(Name):Cookie的名称,用于唯一标识一个Cookie。
-
值(Value):Cookie的值,存储在客户端的数据。
-
域(Domain):指定了Cookie所属的域名。默认情况下,Cookie的域为创建它的服务器的域名,但也可以通过设置Domain属性来指定其他域名。
-
路径(Path):指定了Cookie的可见路径。只有在指定路径下的页面才能访问到这个Cookie,默认情况下,Cookie的路径为创建它的页面路径。
-
过期时间(Expires/Max-Age):指定了Cookie的过期时间。过期时间可以是一个具体的日期时间,也可以是从当前时间开始的秒数。当过期时间到达后,Cookie将被自动删除。
-
安全标志(Secure):指示浏览器仅在通过加密协议(如HTTPS)发送请求时才发送Cookie到服务器。这样可以确保Cookie在传输过程中不被窃取或篡改。
-
HttpOnly标志(HttpOnly):指示浏览器禁止JavaScript访问Cookie,这样可以防止某些类型的跨站点脚本攻击。
-
-
-
Content-Type:指定请求体的内容类型,用于告知服务器请求体的数据类型(如表单数据、JSON数据等)
-
Content-Type是HTTP头部中的一个重要字段,用于指示HTTP消息(如请求体或响应体)中的实体内容的类型和字符集。它告诉客户端或服务器如何解释传输的数据。Content-Type通常由一个主类型和一个子类型组成,用斜杠分隔,例如"text/html"、"application/json"等。以下是Content-Type头部的一些常见取值及其含义:
-
text/plain:纯文本类型,不包含任何格式控制字符,通常用于传输普通文本数据。
-
text/html:HTML文档类型,用于传输HTML格式的网页内容。
-
application/json:JSON数据类型,用于传输结构化的JSON数据。
-
application/xml:XML数据类型,用于传输结构化的XML数据。
-
multipart/form-data:用于通过HTTP POST方法传输表单数据,支持传输文件和文本数据,常用于文件上传。
-
application/x-www-form-urlencoded:用于通过HTTP POST方法传输表单数据,将表单字段以URL编码的形式包含在请求体中。
-
image/jpeg、image/png、image/gif:图片类型,用于传输图片文件的内容。
-
application/octet-stream:二进制数据流类型,表示不属于其他已知类型的任意二进制数据,例如传输文件时常用的类型。
-
-
-
Content-Length:指定请求体的长度,以字节为单位,用于告知服务器请求体的大小。用于处理粘包问题。
-
Referer:指定发送请求的页面的URL,用于告知服务器请求的来源页面。常常与状态码301、302联系
-
Cache-Control:用于指定请求或响应的缓存行为,控制缓存的行为。
-
Connection:指定是否需要保持持久连接,或者是否需要进行连接升级等。
b)响应头部(Response Headers):
- Server:指定了响应的服务器软件信息。
- Date:指定了响应的日期时间。
- Content-Type:指定了响应体的内容类型。与上同
- Content-Length:指定了响应体的长度。与上同
- Set-Cookie:用于设置新的Cookie或更新已有的Cookie。
- Cache-Control:指定了响应的缓存控制方式。
- Expires:指定了响应的过期时间。
- Last-Modified:指定了响应的最后修改时间。
- Location:指定了重定向的目标位置。
- ETag:指定了响应内容的实体标签,用于验证资源是否被修改。
二、请求正文(body)
请求正文(Request Body):
-
格式:请求正文可以是任何格式的数据,如文本、JSON、XML、图片、视频等。
-
内容:请求正文包含了客户端发送给服务器的数据或内容。这些数据可以是表单数据、文件数据、API请求参数等,用于告知服务器客户端的具体需求。
-
编码:通常请求正文的内容会根据请求头部中的Content-Type字段来进行编码,例如application/json表示请求正文是JSON格式的数据。
请求正文的类型通常与请求的方式(HTTP方法)以及具体的应用场景有关。不同的请求方法可能会使用不同的请求正文类型来传递数据,以满足不同的需求。以下是一些常见的请求方法及其常见的请求正文类型:
-
GET:通常不包含请求正文,因为GET请求主要用于获取资源,请求的参数通常会附加在URL中。
-
POST:POST请求常常包含请求正文,用于提交表单数据、上传文件等。常见的请求正文类型包括application/x-www-form-urlencoded(表单数据)、multipart/form-data(文件上传)等。
响应正文(Response Body):
-
格式:响应正文的格式也可以是任何类型的数据,如文本、JSON、XML、图片、视频等。
-
内容:响应正文包含了服务器发送给客户端的实际数据或内容。这些数据可以是网页内容、API响应数据、文件数据等,用于满足客户端的请求。
-
编码:与请求正文类似,响应正文的内容编码通常由响应头部中的Content-Type字段指定,例如text/html表示响应正文是HTML格式的网页内容。
HTTP响应正文的类型通常与响应的状态码和具体的应用场景有关。不同的响应状态码和应用场景可能会使用不同类型的响应正文来传递数据。以下是一些常见的响应状态码及其常见的响应正文类型:
-
200 OK:请求成功,通常返回所请求资源的内容。响应正文类型可以是任何类型的数据,如文本、JSON、XML、HTML、图片、视频等,取决于所请求资源的类型和内容。
-
301 Moved Permanently / 302 Found:重定向状态码,表示资源已被移动到新的URL。通常不包含响应正文,但可以在响应头部的Location字段中指定新的URL。
-
400 Bad Request:客户端请求错误,服务器无法理解请求。响应正文类型通常是错误信息,说明请求的原因或格式错误。
-
404 Not Found:请求的资源未找到。响应正文类型通常是404页面或错误信息,指示用户请求的资源不存在。
-
500 Internal Server Error:服务器内部错误,无法完成请求。响应正文类型通常是错误信息,说明服务器发生了意外错误。
-
503 Service Unavailable:服务不可用,服务器当前无法处理请求。响应正文类型通常是错误信息,说明服务器正在维护或过载。
在HTTP请求和响应中,请求正文和响应正文是可选的,具体是否存在取决于请求或响应的具体内容。有些请求(如GET请求)可能不包含请求正文,而有些响应(如HTTP头部重定向)可能不包含响应正文。然而,对于包含请求或响应正文的HTTP消息,它们承载着实际的数据或内容,用于完成请求的处理和响应的返回。
常见的数据格式及其特点
-
文本(Text):
- 特点:文本格式是最简单和通用的数据格式之一,适用于传输纯文本数据。
- 适用场景:适用于传输普通文本、配置文件、日志等简单的文本数据。
-
JSON(JavaScript Object Notation):
- 特点:JSON是一种轻量级的数据交换格式,易于阅读和编写,适用于表示结构化数据。
- 适用场景:适用于传输API请求和响应数据、Web应用程序中的数据交换、跨平台通信等。
-
XML(eXtensible Markup Language):
- 特点:XML是一种可扩展的标记语言,支持自定义标签和结构化数据,适用于表示复杂的数据格式。
- 适用场景:适用于传输结构化数据、配置文件、Web服务中的数据交换、跨平台通信等。
-
HTML(Hypertext Markup Language):
- 特点:HTML是用于创建网页的标记语言,具有丰富的标签和样式,适用于构建网页内容。
- 适用场景:适用于传输网页内容、构建用户界面、显示富文本内容等。
-
图片(Image):
- 特点:图片格式可以是JPEG、PNG、GIF等,用于传输图像数据。
- 适用场景:适用于传输图像、照片、图表等视觉内容。
相关文章:
HTTP协议格式详解之报头(HTTP header)、请求正文(body)
在之前文章中我们已经介绍了HTTP的首行信息,HTTP协议格式详解之首行信息解析-CSDN博客这篇文章中我们继续介绍HTTP协议的报头部分。 一、报头(HTTP header) a)请求头部(Request Headers): Host:指定服务器…...

[yolox]ubuntu上部署yolox的ncnn模型
首先转换pytorch->onnx->param模型,这个过程可以查资料步骤有点多,参考blog.51cto.com/u_15660370/6408303,这里重点讲解转换后部署。 测试环境: ubuntu18.04 opencv3.4.4(编译过程省略,参考我其他博客) 安装…...

YOLOv9改进策略 :IoU优化 | 提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好
💡💡💡本文改进:一种新的Shape IoU方法,该方法可以通过关注边界框本身的形状和尺度来计算损失,解决边界盒的形状和规模等固有属性对边界盒回归的影响。 💡💡💡对小目标检测涨点明显,在VisDrone2019、PASCAL VOC均有涨点 《YOLOv9魔术师专栏》将从以下各个方向进…...

如何使用KST指标进行多头交易,Anzo Capital一个条件设置
在之前的文章中,我们进行分享了以下知识:什么是KST指标,以及如何进行计算KST指标。有聪明的投资者就在后台进行咨询Anzo Capital昂首资本了,我们知道这些知识有什么用呢? 当然有用了,只要理解背后的逻辑知…...
【QT进阶】第十三章QT动画类的使用QAbstractAnimation
❤️作者主页:凉开水白菜 ❤️作者简介:共同学习,互相监督,热于分享,多加讨论,一起进步! ❤️专栏目录:【零基础学QT】文章导航篇 ❤️专栏资料:https://pan.baidu.com/s/192A28BTIYFHmixRcQwmaHw 提取码:qtqt ❤️点赞 👍 收藏 ⭐再看,养成习惯 订阅的粉丝可通过…...

【机器学习】揭秘无监督学习:机器如何自我学习发现数据奥秘
无监督学习:全面解析 引言 在机器学习的众多分支中,无监督学习因其在未标记数据上发现隐藏模式的能力而独树一帜。它不依赖于事先标记的输出,而是通过分析数据本身的结构和分布来揭示内在的关系和分类。本文深入探讨无监督学习的核心概念、…...
鸿蒙(HarmonyOS)ArkTs语言基础教程(大纲)
鸿蒙(HarmonyOS)ArkTs语言基础教程 简介 ArkTS 是鸿蒙生态的应用开发语言。它在保持 TypeScript(简称 TS)基本语法风格的基础上,对 TS 的动态类型特性施加更严格的约束,引入静态类型。同时,提…...

掌握未来商机:如何利用会话式AI赢在起跑线
AI智能助手:提升工作效率的秘密武器 在这个信息爆炸的时代,内容策略成为了品牌与用户之间沟通的重要桥梁。一个有效的内容策略能够帮助品牌提升知名度,建立与目标受众的深度连接,并最终实现转化目标。内容策略不仅涉及内容的创作与…...

软考高级架构师:数据传输控制方式:程序控制方式、程序中断方式、DMA方式、通道方式、IO处理机
作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…...

大模型之路2:继续趟一条小路
继续趟一条小路,可谓是充满了曲折,当然,必不可少的还是坑。 吐槽 看过的喷友,其实你看完以后,大概率也就是和我一起骂骂街,因为....我也的确没理清楚。 我也不知道做错了什么,就是运行不过去…...

打造安全医疗网络:三网整体规划与云数据中心构建策略
医院网络安全问题涉及到医院日常管理多个方面,一旦医院信息管理系统在正常运行过程中受到外部恶意攻击,或者出现意外中断等情况,都会造成海量医疗数据信息的丢失。由于医院信息管理系统中存储了大量患者个人信息和治疗方案信息等,…...
imu测试--UDP、PTP
imu测试–UDP、PTP UDP 服务器端口: nc -lu -p 52340;客服端: nc -u 192.168.101.175 52340列出linux所以的开放端口 sudo netstat -tulpn或者$ sudo ss -tulpn状态列显示端口是否处于侦听状态(LISTEN)。 在上面的命令中,标志ÿ…...

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(13)
接前一篇文章:软考 系统架构设计师系列知识点之云原生架构设计理论与实践(12) 所属章节: 第14章. 云原生架构设计理论与实践 第3节 云原生架构相关技术 14.3.2 云原生微服务 1. 微服务发展背景 过去开发一个后端应用最为直接的方…...

2024多功能知识付费源码下载
多功能知识付费源码下载实现流量互导多渠道变现 源码介绍 资源变现类产品的许多优势,并剔除了那些无关紧要的元素,使得本产品在运营和变现能力方面实现了质的飞跃。多领域素材资源知识变现营销裂变独立版本。 支持:视频、音频、图文、文档…...

计算机网络——33多点访问协议
多点访问协议 多路访问链路和协议 两种类型的链路(一个子网内部链路连接形式) 点对点 拨号访问的PPP以太网交换机和主机之间的点对点链路 广播 传统以太网HFC上行链路802.11无线局域网 多路访问协议 单个共享的广播型链路 2个过更多结点同时传送&am…...
基于神经网络的人脸识别系统的设计与实现
基于神经网络的人脸识别系统的设计与实现 摘要: 随着计算技术的快速发展,人脸识别已成为身份验证、安全监控等领域的关键技术。本文旨在设计并实现一个基于神经网络的人脸识别系统,该系统能够自动地从输入图像中检测和识别出人脸。论文首先介…...

远控桌面多任务并发文件保密传输
远程桌面文件传输是一个重要的功能,大多数远控都是用的桌面程序模式,利用系统自带复制粘贴拖拽文件拷贝功能,做一个ole调用对接,可以将很多控制权交给操作系统。 但我做的是浏览器版,浏览器是沙盒原理,为了…...

探索 ZKFair 的Dargon Slayer蓝图,解锁新阶段的潜力
在当前区块链技术的发展中,Layer 2(L2)解决方案已成为提高区块链扩容性、降低交易成本和提升交易速度的关键技术,但它仍面临一些关键问题和挑战,例如用户体验的改进、跨链互操作性、安全性以及去中心化程度。在这些背景…...

open Gauss 数据库-04 openGauss数据库日志管理指导手册
发文章是为了证明自己真的掌握了一个知识,同时给他人带来帮助,如有问题,欢迎指正,祝大家万事胜意! 目录 前言 openGauss 数据库日志管理 1 实验介绍 2 实验目的 3 系统日志 3.1 运行时日志 3.2 安装卸载时日志…...

Redis性能瓶颈与安全隐患排查验证纪实
在写《Redis怎样保证数据安全?》这篇文章,我是有对redis设置密码需要哪些步骤,设置密码的性能损耗有验证的。这就涉及到要对redis的配置做修改。 开始时我是打算采用直接使用redis配置文件的方式。所以我从redis官网下载了一个默认的配置文件…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...