首页 > 技术文章 > http协议:四 (1)http实体数据

xrxc 2021-08-24 18:05 原文

 

1、数据类型表示实体数据的内容是什么,使用的是 MIME type,相关的头字段是 Accept 和 Content-Type;

文本格式数据:text/ html 超文本 text/plain 纯文本  text/css  样式表

图像文件:image/gif、image/jpeg、image/png

音频和视频:audio/mpeg、video/mp4

数据格式不固定:application/json,application/javascript、application/pdf,application/octet-stream(即不透明的二进制数据)

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

 

2、数据编码表示实体数据的压缩方式,相关的头字段是 Accept-Encoding 和 Content-Encoding;

gzip  deflate  br

 

3、语言类型表示实体数据的自然语言,相关的头字段是 Accept-Language 和 Content-Language;

en-US  en-GB zh-CN

 

4、字符集表示实体数据的编码方式,相关的头字段是 Accept-Charset 和 Content-Type;

GBK  UTF-8

 

5、客户端需要在请求头里使用 Accept 等头字段与服务器进行“内容协商”,要求服务器返回最合适的数据;

 

6、Accept 等头字段可以用“,”顺序列出多个可能的选项,还可以用“;q=”参数来精确指定权重。

 

7、通用字段

content-type是实体字段,所以请求和响应里都可以用,作用是指明body数据的类型。实际上它是个通用字段,如果要发post请求,就需要带上它。

application/signed-exchange;v=b3 它表示可以接受的内容是Signed HTTP Exchanges,后面的v=b3,可能是版本号。

问题

1、试着解释一下这个请求头“Accept-Encoding: gzip, deflate;q=1.0, *;q=0.5, br;q=0”,再模拟一下服务器的响应头。

回复:

客户端接受gzip,deflate的压缩格式权重都是1,请优先给我这两种合适的压缩形式,对于其他形式的压缩接受权重为0.5,拒绝br形式的压缩
服务器的响应:Content-Encoding:gzip

 

2、假设你要使用 POST 方法向服务器提交一些 JSON 格式的数据,里面包含有中文,请求头应该是什么样子的呢?

回复:

Content-Type为application/json,Content-Language为zh-CN

 

3、试着用快递发货收货比喻一下 MIME、Encoding 等概念。

回复:

MIME就是数据类型 比如快递的东西是是服装类 还是食品类

Encoding就是压缩类型,可以是打包类型 是盒子装的还是空气膜包的  有压缩空间的意思

 

4、如果请求报文里没有 Accept-Encoding 字段,就表示客户端不支持压缩数据;.....”,那请求报文中没有 Accept-Encoding,按照http协议,这表明客户端没有解压缩的能力,服务器就不会做压缩

推荐阅读