ContentType和MimeType有什么区别

时间:2010-08-10 18:54:58

标签: python django content-type mime-types

据我所知,他们绝对平等。但是,浏览一些django文档,我已经 发现了这段代码:

HttpResponse.__init__(content='', mimetype=None, status=200, content_type='text/html')

让我惊讶的是两个相处的人。官方文档能够以实际的方式解决问题:

  

content_type是mimetype的别名。   从历史上看,这个参数只是   叫做mimetype,但是因为这是   实际上包含的价值   HTTP Content-Type标头,它也可以   包括字符集编码,   这使它不仅仅是一个MIME   型号规格。如果mimetype是   指定(非None),该值为   用过的。否则,使用content_type。   如果两者都没有,那么   使用DEFAULT_CONTENT_TYPE设置。

但是,我觉得它不够清楚。为什么我们使用2种不同的命名(几乎相同)? “Content-Type”只是浏览器请求中使用的名称,在外面使用的很少吗?

每个人之间的主要区别是什么,以及什么时候调用mimetype而不是content-type?我是傻瓜还是语法纳粹?

4 个答案:

答案 0 :(得分:47)

  

为什么我们使用2种不同的命名方式   (几乎一样)的事情?是   “Content-Type”只是一个名字   浏览器请求,并且很少   在外面使用?

     

之间的主要区别是什么   每一个,什么时候是正确的   某种mimetype而不是   内容类型 ?我是不是很可怜   语法纳粹?

原因不仅是向后兼容性,而且我担心通常优秀的Django文档对它有点手感。 MIME(至少值得阅读维基百科条目)的起源是扩展互联网邮件,特别是SMTP。从那里开始,MIME和MIME启发的扩展设计已经进入许多其他协议(例如HTTP),并且当需要在现有协议中传输新类型的元数据或数据时仍在使用。有许多RFC讨论用于过多目的的MIME。

具体来说,Content-Type:是多个MIME标头中的一个。 “Mimetype”确实听起来过时了,但是对MIME本身的引用却没有。如果愿意,可以将该部分称为向后兼容性。

[顺便说一句,这纯粹是一个术语问题,与语法没有任何关系。在“语法”下提交每个使用问题都是我的一个小小问题。 GRRRR。]

答案 1 :(得分:39)

我一直认为contentType是mimeType的超集。唯一的区别是可选的字符集编码。如果contentType不包含可选的字符集编码,则它与mimeType相同。否则,mimeType是字符集编码序列之前的数据。

E.G。 text/html; charset=UTF-8

text/html是mimeType
;是附加参数指标
charset=UTF-8是字符集编码参数

E.G。 application/msword

application/msword是mimeType
它不能具有字符集编码,因为它描述了一个格式良好的octet-stream不直接包含字符。

答案 2 :(得分:4)

如果您想了解详细信息,请参阅票证3526

引用:

  

添加了content_type作为别名   mimetype到HttpResponse   构造函数。这稍微多一些   准确的名字。基于来自的补丁   西蒙威利森完全倒退   兼容。

答案 3 :(得分:0)

  

为什么我们使用2种不同的命名(几乎相同)?

向后兼容性,基于您在文档中的引用。