Content-Type详解

Content-Type是什么?

在HTTP协议消息头中,使用Content-Type来表示媒体类型信息。它被用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析html或仅仅展示一个文本等。

Post请求的内容放置在请求体中,Content-Type定义了请求体的编码格式。数据发送出去后,还需要接收端解析才可以。接收端依靠请求头中的Content-Type字段来获知请求体的编码格式,最后再进行解析。


Content-Type的格式

Content-Type:type/subtype ;parameter

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

charset属性是用来声明文档使用的字符编码。解决文档出现乱码的问题主要就是靠它!需要注意的是,这个charset属性的声明必须写在head中最靠前的位置,否则就可能出现乱码的问题。

charset的常用属性值

第一种:UTF-8 ( Unicode字符编码,国际通用)

第二种:ISO-8859-1(英文字符编码,也称拉丁字母表的字符编码)

第三种:gb2312(中文简体字符编码)

第四种:big5(中文繁体字符编码)

在理论上,charset属性值可以使用任何字符编码,但并不是所有浏览器都能够理解它们。某种字符编码使用的范围越广,浏览器就越有可能理解它。如需查看所有可用的字符编码,请访问IANA 字符集。
 

例如:

    Content-Type: text/html;
    Content-Type: application/json;charset:utf-8;                                   json
    Content-Type: application/x-www-form-urlencoded;charset:utf-8;   Form Data格式传参

Content- Type: multipart/form-data;  

用于在表单中上传文件,先看一个请求实例:

Content-Type详解_第1张图片

请求报文:

Content-Type详解_第2张图片

可以看得出,首先随机生成了一个boundary字段,这个boundary用来分割不同的字段。

一个请求的参数,会以boundary开始,然后是附加信息(参数名称,文件路径等),再空一行,最后是参数的内容。

请求体最后再以boundary结束。

当然,response中也会有Content-Type为multipart/form-data的响应头。如果此时是导出文件,则响应头还需要添加一个

    Content-Disposition:attachment;fileName=文件.后缀

注:Content-Disposition是Content-Type的扩展,告诉浏览器弹窗下载框,而不是直接在浏览器里展示文件。因为一般浏览器对于它能够处理的文件类型,如txt,pdf 等,它都是直接打开展示,而不是弹窗下载框。
 

原文连接:Content-Type详解_contenttype_SunAlwaysOnline的博客-CSDN博客

你可能感兴趣的:(javascript,html)