content-type几种常见类型区别

  • Post author:
  • Post category:其他


Content-Type叫做MIME(mediaType)类型,使用Content-Type来表示请求和响应中的媒体类型信息。如果是请求头,它用来告诉服务端如何处理请求的数据,如果是响应头,它用来告诉客户端(一般是浏览器)如何解析响应的数据。下面我们来介绍下常用的几种类型!



1.application/x-www-form-urlencoded


请求参数格式key1=val1&key2=val2的方式进行拼接,并放到请求实体里面,如果是中文或特殊字符等会自动进行URL转码。一般用于表单提交

<body>
    <div>
        <form name="test" method="POST">
            <p>username: <input type="text" name="username" /></p>
            <p>possword: <input type="text" name="possword" /></p>
            <button class="btn">提交
        </form>
    </div>
</body>
<script>
    $('.btn').click((e) => {
        e.preventDefault();
        $.ajax({
            url: 'http://192.168.26.70/cgp-rest/token/partner',
            type: 'POST',
            contentType: "application/x-www-urlencoded",
            data: {
                username: test.username.value,
                possword: test.possword.value
            },
            success: function (data) {
                console.log(data);
            }
        })
    });
</script>

contentType设置为 application/x-www-form-urlencoded,请求参数格式是key1=val1&key2=val2的拼接方式

在这里插入图片描述



2.multipart/form-data


与application/x-www-form-urlencoded不同,它会将表单的数据处理为一条消息,以标签为单元,用分隔符 boundary分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型,content-disposition用来说明字段的一些信息,最后以隔符 boundary–为结束标识。multipart/form-data支持文件上传的格式,一般需要上传文件的表单则用该类型

  1. 上传键值对

    在这里插入图片描述
  2. 上传文件时

    在这里插入图片描述



3.application/json


application/json 作为响应头比较常见。实际上,现在越来越多的人把它作为请求头,用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。由于 JSON 规范的流行,除了低版本 IE 之外的各大浏览器都原生支持JSON.stringify,服务端语言也都有处理 JSON 的函数,使用起来没有困难。


在这里插入图片描述



3.application/octet-stream


指的就是一些二进制文件类型。如application/pdf,指定了特定二进制文件的MIME类型。就像text文件类型若没有特定的子类型就使用 text/plain。二进制文件没有特定或已知的子类型,即使用 application/octet-stream,这是应用程序文件的默认值,一般很少直接使用 。



4.application/xml 和 text/xml


这里用的是xml格式的数据,我个人觉得 XML结构还是过于复杂,比较推荐用json格式数据。

tips:


  1. text/html, text/plain, text/css, text/javascript, image/jpeg, image/png, image/gif, 都是常见的页面资源类型。

  2. 客户端发送请求时的Content-Type设置如果设置的不准确会导致服务端解析不了,从而报错415

  3. 服务端响应的Content-Type最好也设置准确,乱设置某些情况下可能会有问题,比如导致文件无法下载,客户端把json数据当成文本使用

  4. 如果是一个restful接口(json格式),一般将Content-Type设置为application/json; charset=UTF-8

  5. 如果是文件上传,一般Content-Type设置为multipart/form-data

  6. 如果普通表单提交,一般Content-Type设置为application/x-www-form-urlencoded

  7. Accept为客户端希望接受的数据类型,Content-Type为(客户端或者服务端)发送的实体数据的数据类型,两者是有区别的,如果服务端返回的类型和客户端希望接受的数据类型不一致,从而报错406



版权声明:本文为ws9029原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。