位置: IT常识 - 正文

Http协议之Content-Type理解

编辑:rootadmin
Http协议之Content-Type理解

推荐整理分享Http协议之Content-Type理解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

       Content-Type,翻译过来就是”内容类型“,在互联网中就是”互联网媒体类型“。

        在互联网中,两台计算机经常会传输数据,客户端会给服务器发数据,服务器也会给客户端发数据。数据的类型也是有很多种的,我们把所有的在计算机上传输的类型都叫做MIME。

        在http协议头中,使用Content-Type来表示http协议发送的是什么类型的数据,对方收到http响应后拿到响应头中的Content-Type就知道按照什么格式来解码出数据。

        先来思考一个问题: Http协议的请求和响应头中都可以设置Content-Type,那他们有什么区别呢?

        http 请求头中设置Content-type,是客户端对服务器约定的数据编码格式,客户端要求服务器按照Content-type指定的格式来解码http请求体中包含的请求数据;

        http响应头中设置Content-type,是服务器对客户端约定的数据编码格式,服务器要求客户端用什么方式来解码响应体中的数据。

一、Content-Type的格式

Content-Type:type/subtype ;parameter

        type:主类型,任意的字符串,如text,如果是*号代表所有;         subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;         parameter:可选参数,如charset,boundary等

二、常见Content-Type

常见的Content-Type有数百个,下面例举了一些

HTML文档标记:text/html; 普通ASCII文档标记:text/html; JPEG图片标记:image/jpeg; GIF图片标记:image/gif; js文档标记:application/javascript; xml文件标记:application/xml;

更多具体内容可参考《图解HTTP》- 附录D 上面的Content-Type,我们只认得就好,但是下面有4种是需要我们清楚他们的区别及牢记在心的。

1、application/x-www-form-urlencoded

        HTTP会将请求参数用key1=val1&key2=val2的方式进行组织,并放到请求实体里面,注意如果是中文或特殊字符如"/"、","、“:" 等会自动进行URL转码。不支持文件,一般用于表单提交。

请求参数http 请求报文

来看一个demo

1、先来一个get方式的请求

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><form action="demo-form.php">First name: <input type="text" name="FirstName" value="Mickey"><br>Last name: <input type="text" name="LastName" value="Mouse"><br><input type="submit" value="提交"></form><p>点击"提交"按钮,表单数据将被发送到服务器上的“demo-form.php”。</p></body></html>

点击提交后,右键F12来看请求情况

        可以看到,这发送的是一个Get方式请求,参数会通过“&”来拼接成字符串作为查找参数,并在url路径后新增一个问号“?”,然后加上我们的查找参数,直接展示在浏览器顶部的网址搜索栏中。

2、再来看post方式的请求

        把上面的请求方式改成post,然后再运行一遍

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><form action="demo-form.php" method="POST">First name: <input type="text" name="FirstName" value="Mickey"><br>Last name: <input type="text" name="LastName" value="Mouse"><br><input type="submit" value="提交"></form><p>点击"提交"按钮,表单数据将被发送到服务器上的“demo-form.php”。</p></body></html>

         可以看到,这时候发送的是一个post请求,参数会通过“&”方式拼接。但是不会直接以查询参数的方式添加到网址url中,而是作为请求的请求体的方式传送到服务器。在浏览器顶部的网址输入栏是看不懂我们输入的firstname和lastname参数的。

Http协议之Content-Type理解

        并且因为post请求有发送数据给服务器,所以请求体中要指定发送的数据是什么格式,这样服务器拿到数据后才知道用什么格式来解析这些数据。这里在http请求头中用的是Content-Type来指定数据格式。你可以看到在http的get请求方式中是没有Content-Type参数的。

        并且可以看到,Content-Type的值是x-www-form-urlencoded, 这就说明了客户端浏览器会把表单中的数据如果有中文的话先转码,然后以&的方式拼接起来作为http请求体传送给服务器。

2、multipart/form-data

        它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。

        既可以上传键值对,也可以上传文件。

        当上传的字段是文件时,会有Content-Type来表名文件类型;

       1、 content-disposition,用来说明字段的一些信息;

        2、用boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

用一个demo来演示

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><form action="demo-form.php" method="POST" enctype="multipart/form-data">First name: <input type="text" name="FirstName" value="Mickey"><br>Last name: <input type="text" name="LastName" value="Mouse"><br><input type="submit" value="提交"></form><p>点击"提交"按钮,表单数据将被发送到服务器上的“demo-form.php”。</p></body></html>

 点击提交后查看请求

 可以看到

Content-Type=multipart/form-data; boundary=----WebKitFormBoundaryEbKBn4s3ZCuW5a4Y

如果上传有文件

3、application/json

        JSON 是一种轻量级的数据格式,以“键-值”对的方式组织的数据。这个使用这个类型,需要参数本身就是json格式的数据,参数会被直接放到请求实体里,不进行任何处理。服务端/客户端会按json格式解析数据(约定好的情况下)。

请求参数

http 请求报文

4、application/xml 和 text/xml

        与application/json类似,这里用的是xml格式的数据,text/xml的话,将忽略xml数据里的编码格式,参考。

三、​enctype和Content-type​的关系<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head><body><form action="demo-form.php" method="POST" enctype="multipart/form-data">First name: <input type="text" name="FirstName" value="Mickey"><br>Last name: <input type="text" name="LastName" value="Mouse"><br>上传文件路径1:<input type="file" name="name1" id="id1" /><br>上传文件路径2:<input type="file" name="name2" id="id2" /><br><input type="submit" value="提交"></form><p>点击"提交"按钮,表单数据将被发送到服务器上的“demo-form.php”。</p></body></html>

        enctype的取值有三种:

application/x-www-urlencoded

multipart/form-data

text-plain

        enctype其实是encode type,该属性规定在发送数据到服务器之前应该如何对表单数据进行编码。默认情况下是 application/x-www-urlencoded,当表单使用 POST 请求时,数据会被以 x-www-urlencoded 方式编码到 Body 中来传送。

        在通过HTML form提交生成的POST请求中,请求头的Content-Type由元素上的enctype属性指定。

        如果form中没有指定enctype,浏览器会自动添加默认的content-type:application/x-www-form-urlencoded;charset=utf-8。

参考文章

1、深入解析 multipart/form-data

2、Content-Type 详解

3、enctype和Content-type有什么关系

本文链接地址:https://www.jiuchutong.com/zhishi/299552.html 转载请保留说明!

上一篇:Vue中computed和watch的区别(vue中computed和watch区别)

下一篇:机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测

  • 剪映怎么放大镜头特写(剪映怎么放大镜头跟随)

    剪映怎么放大镜头特写(剪映怎么放大镜头跟随)

  • vivo x27密码忘了怎么解锁(vivox27密码忘了怎么解锁)

    vivo x27密码忘了怎么解锁(vivox27密码忘了怎么解锁)

  • 抖音视频完后显示抖音号(抖音显示视频)

    抖音视频完后显示抖音号(抖音显示视频)

  • 电脑连wifi的安全密钥是什么(电脑连wifi的安全WPA2怎样修改?)

    电脑连wifi的安全密钥是什么(电脑连wifi的安全WPA2怎样修改?)

  • alt加f4是什么快捷键(alt+ f4)

    alt加f4是什么快捷键(alt+ f4)

  • 华为nova7看视频不能全屏(华为nova7看视频黑屏)

    华为nova7看视频不能全屏(华为nova7看视频黑屏)

  • 腾讯会议录音在哪?(腾讯会议录音在哪里关闭)

    腾讯会议录音在哪?(腾讯会议录音在哪里关闭)

  • qq空间里的照片删了为什么还有(qq空间里的照片没有了怎么办)

    qq空间里的照片删了为什么还有(qq空间里的照片没有了怎么办)

  • b站错过直播有回放吗(bilibili错过直播怎么办)

    b站错过直播有回放吗(bilibili错过直播怎么办)

  • 拼多多商家直播回放怎么删除(拼多多商家直播悬浮窗怎么关闭)

    拼多多商家直播回放怎么删除(拼多多商家直播悬浮窗怎么关闭)

  • 为什么苹果天气总是显示不出来(为什么苹果天气不一样)

    为什么苹果天气总是显示不出来(为什么苹果天气不一样)

  • 安卓怎么强制桌面横屏(安卓强制全屏方法)

    安卓怎么强制桌面横屏(安卓强制全屏方法)

  • 微信表情符号怎么添加(微信表情符号怎么打出来)

    微信表情符号怎么添加(微信表情符号怎么打出来)

  • 手机信号lte是什么意思(手机信号有lte)

    手机信号lte是什么意思(手机信号有lte)

  • 为什么wifi满格却上不了网(为什么wifi满格信号网速很慢)

    为什么wifi满格却上不了网(为什么wifi满格信号网速很慢)

  • 拼多多怎样无需物流发货(拼多多怎么设置不用免密支付)

    拼多多怎样无需物流发货(拼多多怎么设置不用免密支付)

  • 重新下载抖音原来的作品会不会没有呢(重新下载抖音原来的草稿作品还有吗)

    重新下载抖音原来的作品会不会没有呢(重新下载抖音原来的草稿作品还有吗)

  • 微信运动怎么点不了赞(微信运动怎么点赞今天步数朋友?)

    微信运动怎么点不了赞(微信运动怎么点赞今天步数朋友?)

  • 怎么查询电话记录(怎么查询电话记录电信)

    怎么查询电话记录(怎么查询电话记录电信)

  • 不让别人拉我进群怎么设置(不让别人拉我进群怎么设置qq)

    不让别人拉我进群怎么设置(不让别人拉我进群怎么设置qq)

  • 腾讯视频hdr在哪(腾讯视频的hdr是什么意思)

    腾讯视频hdr在哪(腾讯视频的hdr是什么意思)

  • 怎么让港版x支持电信(港版怎么用支付宝支付)

    怎么让港版x支持电信(港版怎么用支付宝支付)

  • 标题怎么设置(二级标题怎么设置)

    标题怎么设置(二级标题怎么设置)

  • 昵图网如何注册账户(nipic昵图网注册)

    昵图网如何注册账户(nipic昵图网注册)

  • 苹果浏览器最近访问记录怎么删除(苹果浏览器最近关闭的标签页)

    苹果浏览器最近访问记录怎么删除(苹果浏览器最近关闭的标签页)

  • linux清理磁盘空间命令教程(linux清理磁盘空间)

    linux清理磁盘空间命令教程(linux清理磁盘空间)

  • U盘UEFI硬装WIN8.1 64位专业系统,是怎样练成的(uefiu盘安装系统步骤win10)

    U盘UEFI硬装WIN8.1 64位专业系统,是怎样练成的(uefiu盘安装系统步骤win10)

  • Linux上设置用户通过SFTP访问目录的权限的方法(linux设置用户密码)

    Linux上设置用户通过SFTP访问目录的权限的方法(linux设置用户密码)

  • 【Web 三件套】个人简单博客系统页面搭建(附源码)(后端三件套)

    【Web 三件套】个人简单博客系统页面搭建(附源码)(后端三件套)

  • 收到退税款怎么入账
  • 个人出售满两年和不满两年的住
  • 带薪年假是入职就有还是要等一年以后
  • 收到赞助商品的发票
  • 企业筹建期间开办费计入什么科目
  • 12月份未计提的费用汇算清缴如何调整?
  • 屋面维修按定额预算明细表
  • 股东贷款是什么意思
  • 外贸公司的出口清单
  • 安装过程中材料和工资
  • 广告费支出限额
  • 关于处置固定资产的请示
  • 合同印花税进哪个科目
  • 个人所得税计算器2023
  • 发票纳税人识别号错了能重新开吗
  • 通用机打发票能报销不
  • 租房中介费计入租赁费吗
  • 资产处置损益的明细科目有哪些
  • 1697508750
  • word文档打印时不打印批注
  • .exe文件病毒
  • 小规模纳税人买车可以抵税吗
  • 数字权利服务如何打开
  • 公司筹备期的费用
  • PHP中set error handler函数用法小结
  • 耕地占用税的税收优惠
  • linux mib
  • 股东年终利润分录怎么写
  • 增值税专用发票丢了怎么补救
  • 企业已开出的成本怎么算
  • javaweb实现用户登录注册
  • 关系抽取系统的要求
  • [九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)
  • 营业税金及附加税率
  • 小规模纳税人可以开专票吗
  • 小微企业声明函去哪个部门开
  • 核销发生的坏账损失
  • 在mysql中子查询是
  • 房地产企业开发成本科目明细
  • 终止劳动合同赔偿金最晚多久发放
  • 扶贫资金是如何发放的
  • 个人所得税汇算清缴
  • 内账中采购另付的税点算成本还是费用
  • 软件服务费计入管理费用哪个明细
  • 已付预付款当月怎么入账
  • 分红是怎么分的?
  • 购买电脑一次性计入费用吗合理吗
  • 预提费用没有收到发票也没有付款
  • 外币折算会计思维导图
  • 固定资产残值怎么做账务处理
  • 费用科目可以在借方吗
  • 冲减备用金什么意思
  • 固定资产损失计入什么科目
  • 年化率23%是几分利息
  • 会计记账科目表
  • 新企业建账
  • 商业企业采购商品会计分录
  • sqlserver连接失败怎么办
  • winserver2008开机启动
  • win7如何开启VT
  • linux添加新硬盘后网卡无法启动
  • win8系统怎么设置密码登陆
  • cocos2dx scrollview
  • node stream原理
  • perl脚本use strict
  • vue项目中使用scss
  • unity 循环列表
  • python第六章函数
  • 基于javascript的毕业设计
  • android binary xml
  • javascript图片
  • javascript获取数据类型
  • js实现功能
  • javascript要怎么学
  • python获取linux磁盘信息
  • 山东省2023年医改方案
  • 内蒙古自治区耕地保养条例
  • 陕西税务厅
  • 发票校验码不清楚
  • 电子就业协议签了还是应届生
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设