HTML之MIME type

这篇具有很好参考价值的文章主要介绍了HTML之MIME type。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是MIME type

MIME type的缩写为(Multipurpose Internet Mail Extensions)代表互联网媒体类型(Internet media type),MIME使用一个简单的字符串组成,最初是为了标识邮件Email附件的类型,在html文件中可以使用content-type属性表示,描述了文件类型的互联网标准。 是一种用于在异构系统、网络之间传递信息时时声明其格式的方法。

MIME类型能包含视频、图像、文本、音频、应用程序等数据。

一般的,在文件系统中,我们会使用扩展名来表示文件类型,例如:.exe 表示可执行文件、.txt表示纯文本文件、.png表示png编码的图片、.mp4表示mp4视频。这种方法,在独立系统中运行的很好,但在网络传输中不是一个好的方法。首先扩展名并不权威,不同系统之间是有歧义的。其次扩展名的惯例是采用缩写的方式,不能准确表意。

为了便于在网络中准确描述与传递内容的类型声明,多方组织制定出媒体类型表示方法和注册规程(Media Type Specifications and Registration Procedures :rfc6838)。 这种方法最初用于电子邮件(MIME)的,故也称之为 MIME Type。

一般情况下,可以不用设置type属性,浏览器会自动识别内容格式。不同浏览器支持的MIME类型有所不同,如果浏览器不支持某个MIME类型,会有不支持插件内容的提示。

MIME的作用

使客户端软件,区分不同种类的数据,例如web浏览器就是通过MIME类型来判断文件是GIF图片,还是可打印的PostScript文件。

web服务器使用MIME来说明发送数据的种类, web客户端使用MIME来说明希望接收到的数据种类。

标准形式:T1/T2

Media Type 的类型声明由2部分组成:大类/子类。 在册大类有10个,经常用到的大类有6个:textimageaudiovideoapplicationmultipart。而子类就太多了,总计有近2000+种。

复合类型

multipart大类指复合类型。表示随后的数据是由多个不同媒体类型的信息块组成,每个块可以有单独的media type声明。

例如,在传附件,web中常见的multipart/form-data,可以用来上每个附件的媒体类型都可以不一样。再如,电子邮件中可以传不同类型的附件,邮件也是 multipart

结构后缀

对子类型要注意一点,子类声明时可以附加结构说明后缀(Structured Syntax Name Suffixes,rfc6838 4.2.8)。例如:application/soap+xml 表示W3C Web Service报文,报文采用xml语法;application/calendar+xml 表示采用xml语法承载的icalendar报文;application/calendar+json表示用json语法承载的icalendar报文。

通配符

要注意的是,media type 并不仅表示唯一确定类型。在网络协商时,media type支持传递通配符。*/*表示任意类型,text/*表示文本大类。因此,在程序中不能简单对mime type进行字符串比较。你需要考虑通配符的场景。

参数

在实际传递媒体类型时,可以在媒体类型后面附加参数: 大类/子类;参数1=值1;……;参数n=值n。例如:text/plain;charset=utf-8;bom=no

注册一个类型

IANA(互联网数字分配机构),承担 media type的注册管理。
在子类型的管理上,IANA目前设置有四个序列(Tree):1. 标准化(Standards Tree),2. 供应商(Vendor Tree),3. 个人用途(Personal or Vanity Tree),4. 未注册(Unregistered x. Tree)。
举例:

  1. text/plain
  2. application/vnd.openxmlformats-officedocument.wordprocessingml.document
  3. application/prs.xsf+xml
  4. application/x.abc 随意起的

注:历史上,有过用x-开头表示未注册的子类型的情况,后来改用 x.了。application/x-www-form-urlencoded 是一个正式类型。

小结

看到这儿你会发现对于处理 http报文头中的content-type,不能简单按照字符等于来判断,也不能简单将字符串用/来分割成大类子类。一个完整的mime type解析要能正确识别大类、子类、结构后缀、通配符、参数。 你可以参考:org.springframework.util.MimeTypeUtils.parseMimeTypeInternal(String)或 javax.activation.MimeType.MimeType(String) 文章来源地址https://www.toymoban.com/news/detail-705646.html

学习资料

  • MDN文档:MIME 类型
  • MDN文档:常见 MIME 类型列表
  • IANA文档:在册Media Types清单
  • IANA文档:Media Type Specifications and Registration Procedures

到了这里,关于HTML之MIME type的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 运维:硬件服务器BMC介绍

    BMC(Baseboard Management Controller)是硬件服务器上的一个专用子系统,它允许管理员通过独立于主操作系统、CPU和主内存的远程管理工具来监视和管理服务器的硬件状态。这种接口通常用于远程监控和管理服务器,特别是在数据中心和大规模服务器部署环境中。 BMC接口规格: 接

    2024年04月12日
    浏览(53)
  • 运维——ssh无法登录云服务器

    一般来讲,无法登录ssh的原因挺多,如果无法登录云服务器,则除了要检查ssh端口是否放行,防火墙状态外,还需要检查云服务器web控制台入站规则是否开放了对应端口。如果你前面检查都是正常,那么还需要注意云服务器运营商。某些奇葩的运营商,例如TY云,限定了80,

    2024年02月01日
    浏览(65)
  • 运维 | 查看 Linux 服务器 IP 地址

    大多数在操作 Linux 系统时,我们经常需要知道服务器的 IP 比便于后续的一系列操作,这时候有快速查看主机 IP 的命令行操作,能够有效的帮助我们 本章节主要记录一些常用查看服务器 IP 的命令,希望对大家有所帮助。 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。

    2024年04月27日
    浏览(81)
  • 运维:mysql常用的服务器状态命令

    目录 1、查询当前服务器运行的进程 2、查询最大链接数 3、查询当前链接数 4、展示当前正在执行的sql语句 5、查询当前MySQL当中记录的慢查询条数 6、展示Mysql服务器从启动到现在持续运行的时间 7、查询数据库存储占用情况 8、查询服务器启动以来的执行查询的总次数 9、查询

    2024年02月08日
    浏览(52)
  • 运维记录 会产生无用日志的服务器

    创建linux定时任务 crontab -e cron表达式 文件名.sh 查看linux定时任务 crontab -l 确认创建完成后重启cron service crond restart

    2024年04月11日
    浏览(46)
  • 阿里云——云服务器基础运维与管理

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 写在前面 学习目标: 一.3个理由拥抱云服务器 1.什么是云服务器  2.使用云服务的好处 3.推荐云服务的理由 二.1分钟快速定

    2024年02月16日
    浏览(53)
  • 【运维】Linux 跨服务器复制文件文件夹

    如果是云服务 建议用内网ip scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时,用scp可以帮你把文件移出来

    2024年02月08日
    浏览(74)
  • shell脚本——服务器巡检(自动化运维)

     目的   自动 获取集群内 多个主机 的内存、磁盘、cpu等信息 生成日志  准备    VMware虚拟主机IP在同一个网段(互相能ping通)             虚拟主机都有公钥免登录            修改主机IP  vi/etc/sysconfig/netwoek-scripts/ifcfg-ens160            设置主机名 hostnamectl set-ho

    2024年02月15日
    浏览(55)
  • 远程管理服务器 用户组创建 1(运维笔记)

    修改跳板机名称: 修改跳板机网络模式为仅主机模式,ssh连接 假设有三个开发人员: 为三个开发人员设置密码: 创建相应的目录,给开发人员使用: 查看开发人员属组: 创建一个组: 添加用户附加组 查看组信息 赋予权限,更改目录权限: 冒险位(setuid):4000针对一些命令,临

    2023年04月13日
    浏览(52)
  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包