首页 > Web开发 > 详细

[HTTP]POST报文中Content-Type对正文解析的影响

时间:2019-03-15 13:12:58      阅读:182      评论:0      收藏:0      [点我收藏+]

概述

在POST请求中,理论上请求端程序可以发送任意格式报文正文,但是最好在报文头Content-Type字段标明正文的格式,方便接收端根据Content-Type正确处理正文。

传统HTML-form表单提交

html-form表单中,post正文格式被定义在enctype属性中,该属性一共定义了3个值,分别对应Content-Type的3个值:

enctype值 enctype描述 对应Content-Type的值 正文段格式示例
application/x-www-form-urlencoded 在发送前编码所有字符,http_query编码方式(默认) application/x-www-form-urlencoded manid=qwert&file-a=1ca6f20fd0c29742bec9914423140d03.jpg
multipart/form-data 不对字符编码,正文内容是每一个表单字段进行boundary分隔组成的报文,支持二进制数据提交 multipart/form-data; boundary=XXXXXXXXXX(请求端程序自行生成的boundary) ------WebKitFormBoundaryNOdBuEzJYqyffk3l
Content-Disposition: form-data; name="manid"

qwert
------WebKitFormBoundaryNOdBuEzJYqyffk3l
Content-Disposition: form-data; name="file-a"; filename="1ca6f20fd0c29742bec9914423140d03.jpg"
Content-Type: image/jpeg

#¥%%……&%F……%

------WebKitFormBoundaryNOdBuEzJYqyffk3l--

text/plain 空格转换为 "+" 加号,但不对特殊字符编码 text/plain manid=qwert
file-a=1ca6f20fd0c29742bec9914423140d03.jpg

只有enctype="multipart/form-data"能够提交form input type="file"字段选择的文件,其余两种编码方式只能够提交文件名。

 

自定义提交

发送端只需要遵循HTTP报文规范,就可以自行自定义发送post报文,这跟是否带有Content-Type无关,但是接收端也要自定义解析规则,如果是通用的解析规则,通常只能支持规范中的Content-Type类型解析。

PHP

PHP自带的报文解析只支持html form enctype原生的3种解析方式,通常字符类型的字段解析到全局变量$_POST中,二进制内容解析到全局变量$_FILES中。

[HTTP]POST报文中Content-Type对正文解析的影响

原文:https://www.cnblogs.com/yiyide266/p/10536141.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!