关于他们具体的区别,请参考如下的博客,写的挺好的。
https://imququ.com/post/four-ways-to-post-data-in-http.html
https://imququ.com/post/content-encoding-header-in-http.html
https://imququ.com/post/transfer-encoding-header-in-http.html
以下是个人的理解:
Content-Type
Content-Type:text/html;charset=utf-8
上边是一个http报文头部的典型字段。简单说content-type有两个作用:
一个是告诉接受端该http报文消息体的内容是什么类型,比如可以是html, json,xml等等。不同的类型,接收端会用不同的方法处理。除了这些,还有一些多媒体类型等等。
二是编码方式(charset),计算机的世界一切都是0和1, 而我们写程序如果只针对0和1去写,那太麻烦了。所以如何把这些0和1的底层数据转换成我们程序员容或者普通用户容易搞懂的内容,比如字符串,就需要按照一定规则对这些内容进行编码,解码。比如常见的utf-8。如果客户端,服务端编解码的方式不一样,就会出现乱码问题。
Content-Encoding
Content-Encoding虽然字面意思也是字面编码,但是根charset用处不一样。主要是用来压缩消息体内容的。
Transfer-Encoding
Transfer-Encoding用在怎么界定对端的数据传送完毕。