学习笔记--HTTP-字段总结(一)-与传输实体相关的报文字段总结

2023-05-16

目录

 

一、概述

二、介绍一些常用字段

三、传输实体的一些属性

1、传输的数据类型

2、实体的语言类型和编码

3、编码类型

四、文件类型和压缩编码字段

1、Accept

2、Content-Type

3、Accept-Encoding

4、Content-Encoding

五、语言类型和编码字段

1、Accept-Language

2、Content-Language

3、Accept-Charset

4、charset="xxx"

六、q表示的优先级

七、Vary协商字段

八、HTTP传输大文件的方法和相关字段

1、压缩

2、分块传输

3、范围请求

4、多段数据传输


一、概述:

对HTTP报文的处理就是对首部字段的处理,理解了头部字段就是理解了HTTP。

 

二、介绍一些常用字段:

  1. Host:请求字段,给出了接收请求的服务器的主机名和端口号;
  2. User-Agent:请求字段,将发起请求的应用程序名称告知服务器;
  3. Date:通用字段,通常出现在响应报文里;
  4. Server:响应字段,服务器应用程序的名称和版本;
  5. Content-Length:报文里body的长度;

 

三、传输实体的一些属性:

1、传输的数据类型:

MIME type:被传输的基本媒体类型;

相关字段:Accept, Content-Type;

常用类型:

text (纯文本类型):

  • text/html:html类型
  • text/plain:纯文本类型
  • text/css:样式表

image (图像文件):

  • image/gif: gif格式的图像
  • image/jpeg:jpeg格式的图像
  • image/png:png格式的图像

application(数据格式不固定,可能是文本也可能是二进制,必须由上层应用程序来解释):

  • application/json:json格式的数据
  • application/javascript:js文件
  • application/pdf:pdf格式的文件
  • application/octet-stream:不透明的二进制数据

注意:Content-Type 说明的是原始实体的媒体类型,即未被编码之前的实体主体类型。

2、实体的语言类型和编码:

相关字段:Accept-Language,Content-Language

语言类型(人类使用的自然语言):

  • en : 英语
  • en-US : 美式英语
  • en-GB : 英式英语
  • zh-CN : 常用汉语

编码(字符编码,用于处理文字):

  • Unicode
  • UTF-8

3、编码类型:

为了节约带宽,常会将大型数据进行压缩传输。

相关字段:Content-Encoding,Accept-Encoding

常用压缩格式:

  • gzip: GUN zip 压缩格式
  • deflate: zlib(deflate)
  • br:专为HTTP优化的新压缩算法

四、文件类型和压缩编码字段:

两个Accept 和 Content 字段

Accept:客户端表示要接受的数据相关的属性;

Content: 服务端表示传输给客户端的数据类型;

1、Accept:

标记的是客户端可理解的MIME type,可以用","做分隔符,

例如:

Accept: text/html,application/xml,image/webp,image/png

表示可以接受:HTML、xml的文件,还有webp和png的图片。

2、Content-Type:

服务器在响应头里告知客户端数据的真实类型。

例如:

Content-Type:text/html

Content-Type:image/png

3、Accept-Encoding:

标记客户端支持的压缩格式,格式同Accept字段。

4、Content-Encoding:

服务端告知客户端实体数据实际的压缩编码类型。

注意:在客户端POST请求中,Accept都为Content字段

五、语言类型和编码字段:

两个Accept,一个Content,一个charset=”xxx“

1、Accept-Language:

客户端可理解的自然语言。

例如:

Accept-Language: zh-CN,zh-en

2、Content-Language:

服务端告知客户端实体数据的实际语言。

例如:

Content-Language:zh-CN

3、Accept-Charset:

客户端接收的编码类型

例如:

Accept-Charset:gbk,utf-8

4、charset="xxx":

注意:响应字段必须为:Content-Type中用charset=”xxx“表示。

例如:

Content-Type : text/html;charset=utf-

六、q表示的优先级:

HTTP中,可在Accept,Accept-Encoding,Accept-Language 等请求字段加一个 q (质量)参数说明编码的优先级。

  • q 从0.0 到 1.0
  • 0.0:表示客户端不想接受所说明的编码
  • 1.0:表示客户端最想接受的编码类型。

例如:

Accept:text/html,application/xml;q=0.9,*/*;q=0.8

七、Vary协商字段:

响应报文,记录服务器在内容时参考的请求字段:

例如:

Vary:Accept-Encoding,User-Agent,Accept

表示服务器依据了Accept-Encoding,User-Agent和Accept这三个字段,然后决定了发回的响应报文。

八、HTTP传输大文件的方法和相关字段:

1、压缩:

见前文。

2、分块传输:

将大文件拆开分解成多个小块

相关字段:Transfer-Encoding

告知接收方为了可靠地传输报文,已经对其进行了编码。

例如:

Transfer-Encoding:chunked

表示报文中地body是分块逐步发送。

注意:Transfer-Encoding 和 Content-Length 是互斥地(不能同时出现)。

3、范围请求:

表示可以获取一个文件中的某一些分段的数据。

相关字段:

Range:客户端字段,属性:bytes=x-y

(x-y表示数据的范围)

Accept-Ranges:bytes

对于服务器来说,范围请求的功能不是必须的,所以服务器需要在响应报文中包含此字段告知客户端。

当服务器接收到Rnge字段后,它的动作是:

  1. 检查是否越界;
  2. 若范围正确,就根据Range中的属性计算偏移段,返回状态码:”206 Partial Content“
  3. 服务器里添加一个响应头字段:Content-Range(告知片段的实际偏移量和资源的总量),格式:bytes x-y/length
  4. 通过TCP将数据发送给客户端

4、多段数据传输:

在一次传输中,可以传输多段分段的数据。

相关字段:

请求:

Range字段,用逗号分隔;

例如:

Range: bytes=0-9, 20-29

响应:

Content-Type字段

属性:

multipart/byteranges:表示报文的 body 是由多段字节序列组成的

boundary: 给出段之间的分隔标记

例如:

Content-Type: multipart/byteranges; boundary=00000000001

“- -00000000001”就是多段的分隔符


参考资料:

1.《HTTP权威指南》

2.极客时间专栏-透视HTTP协议

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习笔记--HTTP-字段总结(一)-与传输实体相关的报文字段总结 的相关文章

  • C++读写TIF格式

    参考文章 xff1a xff08 1 xff09 https www cnblogs com gywei p 3393816 html xff08 2 xff09 https blog csdn net han jiang xue arti
  • matlab Fourier变换--方波信号的分解与重建

    N 61 200 采用的数据点数 dt 61 4 N 采样的间隔 for n 61 1 N 生成一个方波 if n dt gt 61 2 x n 61 0 8 else x n 61 0 8 end end figure subplot 2
  • matlab 小波分析--高通滤波器和低通滤波器

    xff08 一 xff09 加载一个尺度滤波器 load db8 w 61 db8 figure subplot 4 2 1 stem w title 39 原尺度滤波器 39 计算4个滤波器 Lo D Hi D Lo R Hi R 61
  • C/C++中rand() 函数产生随机数与srand()设置随机数种子

    xff08 1 xff09 rand 产生随机数 xff0c 输出的随机数序列是确定的 xff0c 即每次运行结果一致 include lt iostream gt int main int i j for i 61 0 i lt 10 i
  • matlab与数字图像处理--膨胀和腐蚀

    对于初学者 xff0c 参考一篇很好的说明 xff1a https blog csdn net alw 123 article details 83868878 左边是一个二值化的测试图像 xff0c 白色为图像元素 xff0c 黑色为背景
  • Emmet语法

    Emmet语法 1 1 快速生成HTML结构语法1 2 快速生成CSS样式语法1 3 快速格式化代码 Emmet语法的前身是Zen coding 它使用缩写 来提高html css的编写速度 Vscode内部已经集成该语法 快速生成HTML
  • CString,int,string,char*之间的转换

    C 43 43 标准函数库 中说的 有三个函数可以将字符串的内容转换为字符数组和C string 1 data 返回没有 0 的字符串数组 2 c str xff0c 返回有 0 的字符串数组 3 xff0c copy int 转 CStr
  • C++ TCP网络编程--服务器端多线程处理会话连接

    客户端程序 xff1a include lt winsock h gt include lt iostream gt pragma comment lib 34 ws2 32 lib 34 include lt Windows h gt i
  • matlab复杂函数多元函数拟合

    简介 本文介绍了基于matlab实现的复杂函数以及多元函数的拟合 在工程和研究中偶尔会遇到要用一个非常复杂的数学公式来拟合实验测量数据 xff0c 对这些复杂的数学公式拟合时 xff0c 采用常见的拟合方法往往会失败 xff0c 或者得不到
  • 基于模板替换的word文档自动生成

    简介 word文档自动生成程序是一个根据用户提供的模板word文档以及一些必要的数据文件来渲染生成所要的word文档的工具 关键词 xff1a 批量word文档生成 word文档渲染 自动生成word 使用场景 xff1a 几种典型的可以采
  • word文档-样例1-模板文档

  • word文档-样例1-结果文档

  • Omnibus F4V3 Pro飞控,APM飞控显示电池电压电流

    默认时 xff0c Omnibus F4 Pro烧写APM飞控后 xff0c 电池检测器没有设置的 想要屏幕上显示电池电压和电流信息 xff0c 就需要设置一下 设置信息如下 xff1a BATT MONITOR 61 4 然后重启 xff
  • 网络通信之大小端、字节序转换函数

    在上篇文章中我们提到了UDP xff0c TCP有关函数 xff0c 并知道了一个重要的结构体struct sockaddr 想要实现通信首先要知道通信端的地址 xff0c 所以首先了解一下IPv4套接字地址结构体 span class t
  • MAVROS +ardupilot +gazebo 无人机集群仿真 (一)

    MAVROS 43 ardupilot 43 gazebo 无人机集群仿真 xff08 一 xff09 无人机仿真环境搭建仿真软件安装仿真环境测试无人机多机仿真apm launch文件修改修改 iris ardupilot world修改
  • ubuntu搭建APT源简单方法

    一 为什么需要搭建APT源 原因如下 xff1a 1 在公司内网离线情况下 xff0c ubuntu无法通过apt原生源进行下载 2 有些源国内无法正常访问 xff0c 需要翻墙 基于以上原因 xff0c 需要自建APT源 二 准备条件 需
  • 输入IO、输出IO

    输入IO 这里所说的输入IO xff0c 指的是只作为输入 xff0c 不具有输出功能 此时对于input引脚的要求就是高阻 xff08 高阻与三态是同一个概念 xff09 基本输入电路的类型大致可以分为3类 xff1a 基本输入IO电路
  • 一句话搞懂奇偶校验

    一句话搞奇偶校验 一句话搞懂奇偶校验奇偶校验是啥一句话搞懂奇偶校验实例 一句话搞懂奇偶校验 奇偶校验是一种常见的校正数据错误的方式 奇偶校验是啥 奇偶校验是是数据传送时采用的一种校正数据错误的一种方式 xff0c 分为奇校验和偶校验两种 奇
  • LINUX下如何创建TCP客户端和服务器,实现通信

    TCP的客户端和服务器的创建 1 socket是属于LINUX下的进程间通信的一种方式BSD xff0c xff08 socket xff09 套接字 既可以实现同一台主机间的进程间通信 xff0c 也可以实现不同主机间的进程间通信 xff
  • KEIL工具之not in scope

    KEIL工具之not in scope 使用KEIL有时出现变量不在范围的提示 xff0c 解决方法如下 xff1a 1 该变量没有被使用 2 编译器优化导致的问题 未完待续

随机推荐