ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

12 HTTP的实体数据

2021-05-16 15:34:07  阅读:159  来源: 互联网

标签:12 HTTP Encoding text 实体 数据类型 Accept type


目录
http的body

数据类型和编码

HTTP协议为什么要关心 body

  1. TCP/IP 协议栈,传输数据基本格式:header+body。
  2. TCP、UDP是传输层协议,不关心body数据是什么,只要把数据发送给对方就算完成了任务。
  3. HTTP 协议是应用层协议,数据到达只能说工作完成了一半,还需要告诉上层应用,这是什么数据,否则上层应用不知所措。

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型

  1. MIME 用在电子邮件中,可以让电子邮件发送ASCII 码以外的任意数据,给数据定义了一个标准规范。
  2. MIME 把数据分为8大类,每个大类下再细分多个子类,形式为“type/subtype”的字符串,纳入到了HTTP头字段里。
  3. HTTP 使用了其中一部分,用来标记 body 的数据类型,即 MIME type

HTTP 常用数据类型 MIME type

  1. text
    • 文本格式的可读数据
    • text/html 表示超文本文档;text/plain 纯文本;text/css 样式表
  2. image
    • 图像文件
    • image/gif;image/jpge; image/png
  3. audio/video
    • 音频和视频数据
    • audio/mpeg;video/mp4
  4. application
    • 数据格式不固定,可能是文本也可能是二进制,必须由上层应用程序来解释。
    • application/json;application/javascript;application/pdf
    • application/octetstream 不透明的二进制数据

HTTP 常用的编码格式 Encoding type

  1. HTTP 在传输时为了节约带宽,有时还会压缩数据,为了不要让浏览器继续猜,还需要一个Encoding type,告诉数据用什么编码格式,这样对方才能正确解压缩,还原出原始数据。
  2. 常用的Encoding type
    1. gzip:GNU zip 压缩格式,最流行
    2. deflate:zlib 压缩格式,也流行
    3. br:一种专门为HTTP优化的新压缩算法

数据类型使用的头字段

有了MIME type和Encoding type,无论是浏览器还是服务器都可以很轻松识别出body的类型,这样就能正确处理数据了。
为了客户端和浏览器的“内容协商”,HTTP协议定义了两个 Accept 请求头字段和两个 Content 实体头字段。
客户端用Accept 头告诉服务器希望接收到什么样的数据;服务器用 Content头告诉客户端实际发送了什么样的数据。
举例:

Request Headers:
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br

Response Hraders:
Content-Length: 718
Content-Type: text/plain; charset=UTF-8

语言类型和编码

  1. 为了解决body 的语言“国际化”的问题,引入【语言类型和字符集】的概念。
  2. 语言类型:type-subtyoe,如英语,汉语,日语等
    • en 任意英语
    • en-US 美式英语
    • en-GB 英式英语
    • zh-CN 汉语
  3. 字符集:charset,如 ASCII,GBK,UTF-8 等
  4. 语言类型使用的头字段
Accept-Language: zh-CN,zh;q=0.9
Content-Language:zh-CN
  1. 字符集在HTTP中使用的头字段是 Accept-Charset ,但是响应头却没有对应的Content-Charset,而是在 Content-Type 字段的数据类型后面用 charset=xxx 表示。

内容协商的质量值

  1. HTTP协议里用 Accept、Accept-Encoding、Accept-Language 等请求头字段进行内容协商的时候,还可以用一种特殊的“q”参数表示权重来设定优先级。
  2. “q”的含义,“quality factor”。
  3. 权重的取值:
    • 最大 1;最小 0.01;默认值为1,0表示拒绝
    • 表示:; q=0.01
  4. 举例:Accept:text/html,application/xml;q=0.9,/;q=0.8
    • 它表示浏览器最希望使用的是 HTML文件,权重是1
    • 其次是 xml 文件,权重是 0.9
    • 最后是任意数据类型,权重是 0.8
    • 服务器收到请求头后,就会计算权重,再根据自己的实际情况优先输入 HTML 或 XML。

内容协商的结果

  1. 内容协商的过程是不透明的,每个web服务器使用的算法都不一样
  2. 有时服务器会在响应头多加一个 Vary 字段,记录服务器在内容协商时参考的请求字段,给出一些信息。
    • 举例:Vary:Accept-Encoding,User-Agent,Accept
    • 表示:服务器依据上面三个字段,然后决定了发回的响应报文。

标签:12,HTTP,Encoding,text,实体,数据类型,Accept,type
来源: https://www.cnblogs.com/hqq2019-10/p/14773828.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有