Content-Type
Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。
在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。它用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析并展示html等等。
request客户端 的Content-Type
请求的Content-Type必须设置正确,否正就会返回415错误。415 错误是 Unsupported media type,即不支持的媒体类型。
请求content-type的组成
格式 Content-Type: type/subtype;parameter;
例如 Content-Type: text/html;charset:utf-8;
主类型type
- text------------文本类型
- application-- 应用类型
- *----------------所有类型
子类型subtype
- html-----------html格式
- xml -----------xml格式
- json-----------json格式
- *---------------所有格式
参数parameter
常用的是编码方式参数charset:utf-8
主类型是text
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式(忽略xml头所指定编码格式而默认采用us-ascii编码)
image/png: png图片格式
主类型是application
application/xhtml+xml :XHTML格式
application/xml : XML数据格式(根据xml头指定的编码格式来编码)
application/json : JSON数据格式
application/octet-stream : 二进制流数据(如常见的文件下载)
建议:
-
如果是一个restful接口(json格式),一般将Content-Type设置为application/json; charset=UTF-8;
-
如果是文件上传,一般Content-Type设置为multipart/form-data
-
如果普通表单提交,一般Content-Type设置为application/x-www-form-urlencoded
请求的Content-Type必须设置正确,否正就会返回415错误Unsupported media type
response服务端的响应Content-Type
常遇到下面的几种情况:
1、 服务端需要返回一段普通文本给客户端,Content-Type=“text/plain”
2 、服务端需要返回一段HTML代码给客户端 ,Content-Type=“text/html”
3 、服务端需要返回一段XML代码给客户端 ,Content-Type=“text/xml”
4 、服务端需要返回一段javascript代码给客户端,text/javascript
5 、服务端需要返回一段json串给客户端,application/Json
建议:
一般情况下不需要显示设置;
- 如果是文件导出,Content-Type 设置为 multipart/form-data,并且添加一个Content-Disposition设置为attachment;fileName=文件.后缀。
注:Content-Disposition是Content-Type的扩展,告诉浏览器弹窗下载框,而不是直接在浏览器里展示文件。因为一般浏览器对于它能够处理的文件类型,如txt,pdf 等,它都是直接打开展示,而不是弹窗下载框。
jQuery请求中设置:
$.ajax({
type: 'post',
url:'/xxx',
//contentType:false,//不要去设置Content-Type请求头
//processData: false,// 告诉jQuery不要去处理发送的数据
//当设置为true的时候,jquery ajax 提交的时候不会序列化 data,而是直接使用data。
contentType:'application/x-www-form-urlencoded',
data:{
username:'admin',
password:'123123'
},
// dataType: "json", //返回格式为json
success: function (req) {
//请求成功时处理
console.log(req);
},
complete: function (data) {
//请求完成的处理
},
error: function (data) {
//请求出错处理
console.log(data);
},
})