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官网下载了一个默认的配置文件…...
【C/C++】C语言实现顺序表
C语言实现顺序表 简单描述代码运行结果 简单描述 用codeblocks编译通过 源码参考连接 https://gitee.com/IUuaena/data-structures-c.git 代码 common.h #ifndef COMMON_H_INCLUDED #define COMMON_H_INCLUDED#define LIST_INIT_CAPACITY 100 //!< 线性表初始化长度 #def…...
零基础快速上手:搭建类ChatGPT对话机器人的完整指南
来自:鸵傲科技开发 随着人工智能技术的飞速发展,对话机器人已经成为我们日常生活中不可或缺的一部分。它们能够实时响应我们的需求,提供便捷的服务。那么,对于零基础的朋友们来说,如何快速搭建一个类似ChatGPT的对话机…...
Java中的取余与取模运算:概念、区别与实例详解
Java中的取余与取模运算:概念、区别与实例详解 引言一、取余运算(Remainder Operation)二、取模运算(True Modulo Operation)三、区别比较四、实战应用 引言 在Java编程中,当我们提到“取余”和“取模”运算…...
Excel制作甘特图
使用Excel表格制作甘特图,可根据任务开始时间和结束时间自动计算工时,并自动用指定颜色填充横道图。 1.新建Excel文档,先设置项目基本信息,包括表格名称,这里设置为“**项目甘特图”;然后添加任务序号列&a…...
Dapr(一) 基于云原生了解Dapr
(这期先了解Dapr,之后在推出如何搭建Dapr,以及如何使用。) 目录 引言: Service Mesh定义 Service Mesh解决的痛点 Istio介绍 Service Mesh遇到的挑战 分布式应用的需求 Multiple Runtime 理念推导 Dapr 介绍 Dapr 特性 Dapr 核心…...
RESTful的优点
优点 1.通过url对资源定位,语义清晰; 2.通过HTTP谓词表示不同的操作,接口自描述; 3.可以对GET、PUT、DELETE请求重试(幂等的); 4.可以对GET请求做缓存; 5.通过HTTP状态码反映服务器端…...
网络检测与监控
1.IP sla 服务等级质量检测,思科私有,提供商与用户之间的协议 可以对带宽、延迟、丢包率、网络抖动进行检测 (1)针对icmp进行检测: r1(config)#ip sla 1 r1(config-ip-sla)#icmp-echo 12.12.12.2 source-ip 12.12…...
基于架构的软件开发方法_1.概述和相关概念及术语
1.体系结构的设计方法概述 基于体系结构的软件设计(Architecture-Based Software Design,ABSD)方法。ABSD方法是由体系结构驱动的,即指由构成体系结构的商业、质量和功能需求的组合驱动的。 使用ABSD方法,设计活动可以…...
读所罗门的密码笔记07_共生思想(中)
1. 在人工智能系统中建立信任 1.1. 人类的大脑容易被个人倾向、干扰因素和确认偏误所影响 1.2. 古莱说,然而,从不同的角度去思考事实、花更长时间来做决策的能力,可能会让人类拥有“密探”一般的智慧 1.3. 我们可以对决策进行批判性思考&a…...
目标检测——工业安全生产环境违规使用手机的识别
一、重要性及意义 首先,工业安全生产环境涉及到许多复杂的工艺和设备,这些设备和工艺往往需要高精度的操作和严格的监管。如果员工在生产过程中违规使用手机,不仅可能分散其注意力,降低工作效率,更可能因操作失误导致…...
邯郸企业网站制作/搜索关键词优化排名
上一篇给大家介绍了ValueAnimator的大部分函数的用法,不过还都是些简单的用法,这篇我们带大家来看看有关加速器、animator和keyFrame的知识。 一、插值器 插值器,也叫加速器;有关插值器的知识,我在《Animation动画详解…...
如何提升网站的权重/搜索引擎优化百度
整合自 http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/59848.aspx 根据TI的文档说明,BLE的传输速率可以达到5.9Kb/s。 现在我使用SimpleBLECentral于SimpleBLEPerpheral通讯。 建立了一个具有GATT_PROP_NOTIFY|GATT_PROP…...
盐城做网站/廊坊seo整站优化软件
FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求. 特色功能: 免费海外服务器远程桌面加速,ssh加速,双边tcp加速,内网穿透.下载地址:http://www.hostbuf.com/t/988.html更新日志:http://www.hostbuf.…...
旅游网站建设策划方案/2022年7到8月份的十大新闻
蕾师师 发自 凹非寺 量子位 报道 | 公众号 QbitAI2020年已经过去了,国外的一家专门提供Python服务的网站Troy Labs,盘点出了2020年发布的Python库Top10。上榜的有FastAPI的升级版Typer、将CLI变成彩色的Rich、基于GUI框架的Dear PyGui、还有精简报错信息…...
广西建设官方网站/企业百度推广怎么收费
HTTP事务的剖析 本指南的目的是让你充分了解Node.js HTTP处理的过程,我们假设你在一般意义上知道HTTP请求的工作方式,无论语言或编程环境如何,我们还假设你对Node.js EventEmitters和Streams有点熟悉,如果你对它们不太熟悉&#x…...
咔咔做受视频网站/全网热度指数
Python的安装登录官网:www.python.org,选择版本3.6.4进行下载(下文中皆以MacOS为例)并安装。 PyCharm的安装登录网址:www.jetbrains.com,选择专业版进行下载并安装。 激活PyCharm时,在License Server中填入:…...