参考 四种常见的 POST 提交数据方式对应的content-type取值
application/x-www-form-urlencoded 浏览器原生支持
提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。
multipart/form-data 浏览器原生支持
POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data;
boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA------WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name=“text”
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name=“file”; filename=“chrome.png” Content-Type: image/pngPNG … content of chrome.png …
------WebKitFormBoundaryrGKCBY7qhFd3TrwA–
该种数据传输类型可以传输多种类型的文件,上述例子中同时上传了 string 和 png类型的数据。
这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。
每种数据以boundary分开
数据结束后以**–boundary–**结尾。
application/json 常用
用来告诉服务端消息主体是序列化后的 JSON 字符串
传输的数据类型是json类型数据,但是必须用JSON.stringfy()把json数据字符串化才能传输。
var data = {‘title’:‘test’, ‘sub’ : [1,2,3]}; $http.post(url,
data).success(function(result) {
… }); 最终发送的请求是:POST http://www.example.com HTTP/1.1 Content-Type:
application/json;charset=utf-8{“title”:“test”,“sub”:[1,2,3]}
text/xml 我很少用到
在此不过多描述,插入参考文章中的描述如下:
XML-RPC(XML Remote Procedure Call)。它是一种使用 HTTP 作为传输协议,XML
作为编码方式的远程调用规范。典型的 XML-RPC 请求是这样的:POST http://www.example.com HTTP/1.1
examples.getStateName 41 XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,如 WordPress 的 XML-RPC Api,搜索引擎的 ping 服务等等。JavaScript中,也有现成的库支持以这种方式进行数据交互,能很好的支持已有的 XML-RPC 服务。不过,我个人觉得 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。
Content-Type: text/xml