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协议,这表明客户端没有解压缩的能力,服务器就不会做压缩