http请求中的content-type
指令
- media-type 资源或数据的MIME type
- charset 字符编码标准
- boundary 对于多部分实体,boundary 是必需的,其包括来自一组字符的1到70个字符,已知通过电子邮件网关是非常健壮的,而不是以空白结尾。它用于封装消息的多个部分的边界。
Content-Type属性指定请求和响应的 HTTP 内容类型。如果未指定 ContentType,默认响应的内容类型为 text/html
,默认请求的内容类型为application/x-www-form-urlencoded
。Content-Type一般只存在于Post方法中,因为Get方法是不含“body”的,它的请求参数都会被编码到url后面,所以在Get方法中加Content-type是无用的。
在 nginx 中有个配置文件 mime.types
,主要是标示 Content-Type 的文件格式。
下面是几个常见的 Content-Type:
- text/html
- text/plain
- text/css
- text/javascript
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- application/xml
- ......
前面几个为html、纯文本、css、javascript 的文件类型。后面四个则是 POST 的发包方式。
application/x-www-form-urlencoded
是常用的表单发包方式,普通的表单提交,或者 js 发包,默认都是通过这种方式,数据被编码为key/value格式发送到服务器。
multipart/form-data
用在发送文件的POST包。
Multipart/form-data的请求头必须包含一个特殊的头信息 : Content-Type , 且其值也必须规定为multipart/form-data , 同时还需要规定一个内容分割符即boundary用于分割请求体中的多个POST的内容 , 如文件内容和文本内容自然需要分割开来 , 不然接收方就无法正常解析和还原这个文件了。
text/xml
微信用的是这种数据格式发送请求的。XML-RPC(XML Remote Procedure Call)是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范。
application\json
HTTP通信中并不存在所谓的json,而是将string转成json罢了,也就是,application/json可以将它理解为text/plain,普通字符串。
application\xml
XML数据格式