在发出POST请求时,必须以某种方式对构成请求主体的数据进行编码.
HTML表单提供了三种编码方法.
application/x-www-form-urlencoded
(默认值)multipart/form-data
个text/plain
增加application/json
人的工作正在进行中,但这一点已经被放弃了.
(对于使用除HTMLForm深渊翻滚之外的其他方式生成的HTTP请求,也可以进行其他编码.JSON是用于Web服务的通用格式,有些仍在使用SOAP.)
格式的细节对大多数开发人员来说并不重要.重点是:
text/plain
.编写客户端代码时:
multipart/form-data
个 when your form includes any <input type="file">
elementsmultipart/form-data
个 or application/x-www-form-urlencoded
but application/x-www-form-urlencoded
will be more efficient编写服务器端代码时:
大多数(比如Perl的CGI->param
或PHP的$_POST
superglobal公开的)都会为您处理这些差异.不要费心解析服务器接收到的原始输入.
有时,您会发现无法同时处理两种格式的库.js处理表单数据最流行的库是body-parser,它不能处理多部分请求(但是文档中推荐了一些可以处理的替代方案).
如果您正在编写(或调试)用于解析或生成原始数据的库,那么您需要开始担心其格式.出于兴趣,你可能也想知道.
application/x-www-form-urlencoded
与URL末尾的查询字符串大致相同.
multipart/form-data
个要复杂得多,但它允许在数据中包含整个文件.结果的一个例子可以在HTML 4 specification中找到.
text/plain
是由HTML5引入的,仅对调试有用(从the spec:They are not reliably interpretable by computer开始),我认为其他与工具(如大多数浏览器的开发工具中的the Network Panel)相结合的工具对此更好).