[笔记]《HTTP权威指南》- 媒体类型和字符集

        Content-Type 首部字段说明了实体主体的 MIME 类型。MIME 类型是标准化的名字,用以说明作为货物运载实体的基本媒体类型。客户端应用程序使用 MIME 类型来解析和处理其内容。

        MIME 类型由一个主媒体类型后面跟一条斜线以及一个子类型组成,子类型用于进一步描述媒体类型。

1. 文本的字符编码

        Content-Type 首部还支持可选的参数来进一步说明内容的类型。charset(字符集)参数就是个例子,它说明把实体中的比特转换为文本文件中的字符的方法。

2. 多部分媒体类型

        MIME 中的 multipart(多部分)电子邮件报文中包含多个报文,它们合在一起作为单一的复杂报文发送。每一部分都是独立的,有各自的描述其内容的集;不同的部分之间用分界字符串连接在一起。

3. 多部分表格提交

        当提交填写的 HTTP 表格时,变长的文本字段和上传的对象都作为多部分主体里面独立的部分发送,这样表格中就可以填写各种不同类型和长度的值。

        HTTP 使用 Content-Type:multipart/form-dataContent-Type:multipart/mixed 这样的首部以及多部分主体来发送这种请求,举例如下:

Content-Type: multipart/form-data; boundary:[abcdefghijklmnopqrstnvwxyz]

         其中的 boundary 参数说明了分隔主体中不同部分所用的字符串。

        下面的例子展示了 multipart/form-data 编码。假设我们有这样的表格:

<form action="http://server.com/cgi/handle"
    enctype="multipart/form-data"
    method="post">
    What is your name?<input type="text" name="submit-name"><br>
    What files are you sending?<input type="file" name="files"><br>
    <input type="submit" value="Send"><input type="reset">
</form>

         用户 Agent 代理可能会发回下面这样的数据:

Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Sally
--AaB03x
Content-Disposition: form-data; name="files"; filename="essayfile.txt"
Content-Type: text/plain
...contents of essayfile.txt...
--AaB03x--

         如果用户还选了另一个(图像)文件 imagefile.gif,用户 Agent 代理可能像下面这样构造这个部分:

Content-Type: multipart/form-data; boundary=AaB03x
--AaB03x
Content-Disposition: form-data; name="submit-name"
Sally
--AaB03x
Content-Disposition: form-data; name="files";
Content-Type: multipart/mixed; boundary=BbC04y
--BbC04y
Content-Disposition: file; filename="essayfile.txt"
Content-Type: text/plain
...contents of essayfile.txt...
--BbC04y
Content-Disposition: file; filename="imagefile.gif"
Content-Type: image/gif
...contents of imagefile.gif...
--BbC04y
--AaB03x--

 4. 多部分范围响应

        HTTP 对范围请求的响应也可以是多部分的。这样的响应中有 Content-Type:multipart/byteranges 首部和带有不同范围的多部分主体。

转载于:https://www.cnblogs.com/SyMind/p/8808700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值