MIME类型解析
MIME(Multipurpose Internet Mail Extensions)多用途网络邮件扩展类型,可被称为Media type或Content type,
它设定某种类型的文件当被浏览器打开的时候需要用什么样的应用程序,多用于HTTP通信和设定文档类型例如HTML。
之所以叫多用途网络邮件扩展类型,因为它最早被用于电子邮件系统,后用于浏览器,服务器将此类型名放入传给浏览器的数据中以告诉浏览器用什么样的插件打开它
MIME组成:(type/subtype; parameter)) 主类型+子类型+参数(可选)也可称为信息头+段头,这种称为更接近于“邮件”的概念
写法上,传统写法是全小写,但其本身对大小写不敏感
当前被认可的主类型包括: application text image multipart audio example font message model multipart video
子类型也由媒体类型组成,但它也能包含其他内容,例如前缀、作者名。
备注: 写法上注意;与后面的参数之间有空格
例如: text/html; charset=UTF-8
常见MIME类型:
application: 某种二进制附件,对于没有subtype的情况,默认是application/octet-stream
text: 文本,理论上可读,对于没有subtype的情况,默认是text/plain
image: 图像
audio: 音频
video: 视频
multipart: 多部分文档文件(复合文档文件)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面是详细介绍
application/octet-stream 未知的应用程序文件
application/json json数据
text/plain 未知的文本文件(纯文本文件),浏览器会认为这是可以直接显示的
注: 浏览器分辨文件是基于MIME的,而不会把文件打开查看是否是其他类型,例如用link链接了一个标记为text/plain的文件,就算此文件是css文件,就算其后缀是.css,浏览器依旧不认
text/css css文件
text/html HTML文件
image/gif gif文件
常见的还有image/jpeg、image/png、image/svg
很多浏览器支持icon image/x-icon
multipart/form-data 多用于form表单提交,其中multipart即多部分文档,这里提供一个例子解析何为多部分文档
<form action="http://localhost:8000/" method="post" enctype="multipart/form-data">
<input type="text" name="myTextField">
<input type="checkbox" name="myCheckBox">Check</input>
<input type="file" name="myFile">
<button>Send the file</button>
</form>
发送的请求是:
POST / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=---------------------------8721656041911415653955004498
Content-Length: 465 -----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myTextField" Test
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myCheckBox" on
-----------------------------8721656041911415653955004498
Content-Disposition: form-data; name="myFile"; filename="test.txt"
Content-Type: text/plain Simple file.
-----------------------------8721656041911415653955004498--
它通过分割线将内容分割成不同部分,每部分有自己的实体和请求头,因为被分割了,所以被称为多部分文档。
这里的boundary是一个分隔符,可自定义,为了不和正常文本相混淆,一般设得复杂些,例如 ---------------------6354444552345。
注意: 窗口数据仅一条,用分割线和换行符隔开,这是它与application/x-www-form-urlencoded的很大区别
application/x-www-form-urlencoded
与前者类似,注意区别:
1.窗口数据被编码为键值对;
2.当表单中包含文件上传时只能用multipart/form-data;
3.multipart/form-data只支持post
关于具体区别,可移步: https://www.lvtao.net/dev/1179.html
备注: jquery默认content-type为application/x-www-form-urlencoded,这样能应付大多数情况
MIME类型解析的更多相关文章
- mime类型的解析与应用
MIME类型解析 MIME(Multipurpose Internet Mail Extensions)多用途网络邮件扩展类型,可被称为Media type或Content type, 它设定某种 ...
- 游戏开发中IIS常见支持MIME类型文件解析
游戏开发中IIS常见支持MIME类型文件解析 .apkapplication/vnd.android .ipaapplication/vnd.iphone .csbapplication/octet- ...
- Rails中的MIME类型
layout title date comments categories post rails的中的MIME类型 2014-09-08 21:40 true ruby Rails开发中经常使用不同的 ...
- HTTP协议扫盲(四)HTTP协议进阶 - MIME类型
一.概念和原理 1.什么是MIME类型? MIME类型,即多用途互联网邮件扩展,它是一个互联网标准,在1992年最早应用于电子邮件系统,但后来也应用到浏览器. 服务器会将它们发送的多媒体数据的类型告诉 ...
- 从零开始学安全(四十)●上传文件MIME类型绕过漏洞防御
MIME检测原理 服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的. php示例代码: if($_FILES['userfile']['type' ...
- 补习系列(2)-springboot mime类型处理
目标 了解http常见的mime类型定义: 如何使用springboot 处理json请求及响应: 如何使用springboot 处理 xml请求及响应: http参数的获取及文件上传下载: 如何获得 ...
- MIME 类型
关于读音 为了防止大家出去丢人,我先示范一下,MIME应该独坐[maim],听起来就好像“男人”的英语法人一样. 浏览器和MIME的关系 浏览器依靠MIME类型解释网页. 每当浏览器请求一个web页面 ...
- flask请求钩子、HTTP响应、响应报文、重定向、手动返回错误码、修改MIME类型、jsonify()方法
请求钩子: 当我们需要对请求进行预处理和后处理时,就可以用Flask提供的回调函数(钩子),他们可用来注册在请求处理的不同阶段执行的处理函数.这些请求钩子使用装饰器实现,通过程序实例app调用,以 b ...
- HTTP协议-MIME类型
每一个 URL 都代表着一个资源对象,而当我们请求一个网页的时候,看似只请求了一个 URI(统一资源标识符),实际上这个网页可能包含多个 URI,例如图片资源的 URI 和视频资源的 URI 等.此时 ...
随机推荐
- Linux系统挂载windows共享目录报错mount error(121):remote error I/O error
经查,这是由于NFS(Network File System)即网络文件系统服务器有多个版本,V2.V3.V4.而且各版本同时运行,因此挂载时需要说明版本号 mount -o username='pk ...
- node.js用logio实时监控log
http://logio.org/ 1.先装好node.js $ yum install nodejs 2.安装log.io $sudo npm install -g log.io --user &q ...
- Android application 和 activity 标签详解
extends:http://blog.csdn.net/self_study/article/details/54020909 Application 标签 android:allowTaskRep ...
- pandas 基础操作 更新
创建一个Series,同时让pandas自动生成索引列 创建一个DataFrame数据框 查看数据 数据的简单统计 数据的排序 选择数据(类似于数据库中sql语句) 另外可以使用标签来选择 通过位置获 ...
- HTML页面本地正常,部署到服务器稍微异常解决方案
<meta http-equiv="X-UA-Compatible" content="IE=edge" > 在IE浏览器正常显示
- javascript面试题(2)
可以参考一 https://www.cnblogs.com/DCL1314/p/7903114.html 1.什么是JavaScript?(这是基本题,对很多程序员来说也是送分题!) JavaScr ...
- 【Java线程安全】 — ThreadLocal
[用法] 首先明确,ThreadLocal是用空间换时间来解决线程安全问题的,方法是各个线程拥有自己的变量副本. 既然如此,那么是涉及线程安全,必然有一个共享变量,我给大家声明一个: public c ...
- vue里的watch 和 computed 监听的不同
1.computed里是偏向于通过监听data里的值变化后,经过运算返回一个新的计算结果, 所以k不能与data里的k重名,并且必须有return, 能够缓存,依赖的值不变化不会进行重复计算: 而wa ...
- FTPClient工具类
package com.vcredit.ddcash.server.commons.net; import com.vcredit.ddcash.server.commons.model.FtpPar ...
- jenkins启动java项目的jar包总是退出
参考文档: https://www.cnblogs.com/DFX339/p/8241253.htmlhttps://blog.csdn.net/windanchaos/article/details ...