Node - Content-Type & Content-Disposition

Node - Content-Type & Content-Disposition

  • Content-Type
    Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME(Multipurpose Internet Mail Extensions)类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。不同的文件具有不同的MIME值,如JSON文件的值为application/json,XML文件的值为application/xml等。

    Content-Type的格式:
    Content-Type:type/subtype ;parameter

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

    例如:
    Content-Type: text/html;
    Content-Type: application/json;charset:utf-8;

    为了方便获知文件MIME值,Node社区提供了mime模块来判断文件类型,它的使用十分简单,如下:

    1
    2
    3
    let mime = require('mime');
    mime.getType('file.html'); // => 'text/html'
    mime.getType('file.text'); // => 'text/plain'
  • Content-Disposition
    在一些场景中,无论响应的内容是什么样的MIME值,不需要我们客户端去打开它,而需要其弹出并下载。为了满足这种需求,Content-Disposition字段诞生了。客户端会根据Content-Disposition的值判断是应该将报文数据当做即时浏览的内容,还是可下载的附件。当内容需要查看时,它的值是inline;当数据可以存为附件时,他的值是attachment。另外,Content-Dispositon字段还能通过参数指定保存时应该使用的文件名。格式如下:

    1
    Content-Disposition: attachment;filename='filename.ext'