一、默认的post表单格式:
例如:
表单参数被放置在HTTP Body中传输,(body中的数据为:language=go&since=monthly)。因此在该HTTP请求的headers中我们会发现一个header字段:Content-Type,它的值为application/x-www-form-urlencoded。
这种格式和Get请求方式的查询字符串格式相同。
我们可以在Form中使用enctype属性改变Form传输数据的内容编码类型,
该属性的默认值就是application/x-www-form-urlencoded(即key1=value1&key2=value2&…的形式)。
enctype的其它可选值还包括:
text/plain
multipart/form-data
二、text/plain编码格式的post表单:
这种编码格式也称为raw。即将数据内容原封不动的放入Body中传输,保持数据的原先的编码方式(通常为utf-8)
例如:
提交表单时,body中的数据为: language=go since=monthly 三、multipart/form-data编码格式的post表单: 当enctype=multipart/form-data时,HTTP Body中的数据以多段(part)的形式呈现,段与段之间使用指定的随机字符串分隔,该随机字符串也会随着HTTP Post请求一并传给服务端(放在Header中的Content-Type的值中,与multipart/form-data使用分号相隔),如: Content-Type: multipart/form-data; boundary=---------------------399501358433894470769897 例如: 提交表单时,body中的数据为: ---------------------399501358433894470769897 Content-Disposition: form-data; name="language" go ---------------------399501358433894470769897 Content-Disposition: form-data; name="since" monthly ---------------------399501358433894470769897-- 如果有文件上传,文本文件使用格式: ---------------------399501358433894470769897 Content-Disposition: form-data; name="";filename="aaa.txt" Content-type: text/plain 文件内容 图片文件使用格式: ---------------------399501358433894470769897 Content-Disposition: form-data; name="";filename="bbb.png" Content-type: image/png 一堆乱码,是文件的二进制内容 json格式文件使用格式: ---------------------399501358433894470769897 Content-Disposition: form-data; name="";filename="ccc.json" Content-type: application/json json格式的字符串