content-type 以及MIME类型

 

HTTP content-type

Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因。

MIME

每一个 URL 都代表着一个资源对象,而当我们请求一个网页的时候,看似只请求了一个 URI(统一资源标识符),实际上这个网页可能包含多个 URI,例如图片资源的 URI 和视频资源的 URI 等。此时有些浏览器为了加快访问速度,可能会同时开多个线程去请求 URI。也就是说其实每一个 URI 都发送了一个请求报文。

  URI 包括 URL(统一资源定位符)和 URN(统一资源名)。但由于 URN 多还在实验阶段,实验的并不是太广泛,所以现在几乎所有的 URI 都是 URL。

  而当我们的浏览器要显示或处理这些资源的时候,我们并不知道其响应的数据是什么类型的,为了区分这些资源类型,就需要用到 MIME 了。HTTP 会为每一个通过 web 传输的对象添加上 MIME 类型的数据格式标签。浏览器在读取到对应的信息后,会调用相应的程序去处理它,任何得到我们想要的结果。

  MIME 类型在请求报文和响应报文中均有体现。例如,当我请求 http://www.cnblogs.com/scolia 这个 URL 时,

  我的请求报文头中有:

content-type 以及MIME类型

Accept 表示我当前的浏览器希望接受什么类型的文件,这个是由浏览器生成的。但是,这并不意味着浏览器只支持这里类型的文件,我们在并没有看到 img 等代表图片的字眼,而浏览器不可能不支持显示图片吧?什么,你说真有不支持的?好吧,当我没说。
  注意:这里算是一直默认格式吧,我默认你相应的内容是这些,但是你响应其他的我也能够处理。

  而在响应报文头中有

content-type 以及MIME类型

但是,我说过看似请求的一个 URL 实际上包含了多个 URL ,如果你用工具查看,我这里用的是火狐的控制台,可以看到我这次的请求有:

content-type 以及MIME类型

MIME 类型有非常多种,一般常见的有:

  text/html:HTML 格式的文本文档

  text/plain:普通的 ASCII 文本文档

  image/jpeg:JPEG格式的图片

  image/gif:GIF格式的图片

  video/quicktime:Apple 的 QuickTime 电影

  application/vnd.ms-powerpoint:微软的powerpoint文件