愚墨的博客
  • 首页
  • 前端技术
  • 面试
只争朝夕不负韶华
  1. 首页
  2. 前端技术
  3. 正文

总结HTTP的Content-Type

2016年03月17日 3321点热度 0人点赞 0条评论

这里简单的介绍一下post传输中的几种Content-Type。

Content-Type用于指定内容类型,一般是指网页中存在的Content-Type,Content-Type属性指定请求和响应的HTTP内容类型。如果未指定 ContentType,默认为text/html。

常见的几种Content-Type有:

  1. text/html
  2. text/plain
  3. text/css
  4. text/javascript
  5. application/x-www-form-urlencoded
  6. multipart/form-data
  7. application/json
  8. application/xml

前几个很好理解,后几个是POST的发包方式。依次介绍一下。

  • application/x-www-form-urlencoded
    常用的表单发包方式,普通的表单提交(没有type="file"),或者js发包,默认都是通过这种方式。
    简单的实现:

    <form enctype="application/x-www-form-urlencoded" action="http://localhost:1121/info" method="POST">
        <input type="text" name="name" value="Manster">
        <input type="text" name="age" value="23">
        <input type="submit" value="submit">
    </form>
  • multipart/form-data
    用在发送文件的POST包,或者是有type="file" 控件的表单中。
    具体实现:

    <form enctype="multipart/form-data" action="http://localhost:1121/info" method="POST">
        <input type="text" name="name" value="Manster">
        <input type="file" name="fileContent">
        <input type="submit" value="submit">
    </form>
  • application/json
    传递的data是一个json字符串,HTTP通信中并不存在所谓的json,而是将string转成json罢了,也就是,application/json可以将它理解为text/plain,普通字符串。
    同时需要写上请求头:

    xhr.setRequestHeader("Content-type","application/json");

 

HTTP上传的基本知识 :

在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。

  • application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
  • multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
  • text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。

补充:
form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application /x-www-form-urlencoded。

当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1& amp; amp;name2=value2...),然后把这个字串append到url后面,用?分割,加载这个新的url。

当action为post时候,浏览器把form数据封装到http body中,然后发送到server。

如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。但是如果有 type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上 Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件 name)等信息,并加上分割符(boundary)。

使用中需要注意的地方:

在AJAX往服务器上传数据是,设置了content-type为application/x-www-form-urlencoded,此时是对整个发 送内容作了编码,并不是对名字对应的值做了编码。

 

属性值

值 描述
application/x-www-form-urlencoded 在发送前编码所有字符(默认)
multipart/form-data 不对字符编码。

在使用包含文件上传控件的表单时,必须使用该值。

text/plain 空格转换为 "+" 加号,但不对特殊字符编码。
标签: 暂无
最后更新:2017年03月18日

愚墨

保持饥渴的专注,追求最佳的品质

点赞
< 上一篇
下一篇 >

文章评论

取消回复

搜搜看看
历史遗迹
  • 2023年5月
  • 2022年9月
  • 2022年3月
  • 2022年2月
  • 2021年12月
  • 2021年8月
  • 2021年7月
  • 2021年5月
  • 2021年4月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年9月
  • 2020年7月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年1月
  • 2019年5月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年9月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年7月
  • 2017年6月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年6月
  • 2015年4月

COPYRIGHT © 2020 愚墨的博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS