ContentType和MimeType有什么区别

据我所知,他们是绝对平等的。 然而,浏览一些Django的文档,我发现这段代码:

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

这令我感到惊讶,两个相处融洽。 官方文件能够以实际的方式解决这个问题:

content_type是mimetype的别名。 历史上,这个参数只被称为mimetype,但是由于这实际上是HTTP Content-Type头中包含的值,所以它也可以包含字符集编码,这使得它不仅仅是一个MIMEtypes规范。 如果指定了mimetype(不是None),则使用该值。 否则,使用content_type。 如果没有给出,则使用DEFAULT_CONTENT_TYPE设置。

但是,我不觉得它足够阐明。 为什么我们使用2个不同的命名(几乎相同)? “Content-Type”仅仅是浏览器请求中使用的一个名称,在其外部使用很less?

每一个之间的主要区别是什么,什么时候调用什么是mimetype而不是content-type ? 我是懦弱和语法纳粹?

为什么我们使用2个不同的命名(几乎相同)? “Content-Type”仅仅是浏览器请求中使用的一个名称,在其外部使用很less?

每一个之间的主要区别是什么,什么时候调用什么是mimetype而不是content-type? 我是懦弱和语法纳粹?

原因不仅在于后向兼容性,恐怕通常很出色的Django文档对它有点手摇。 MIME (真正值得阅读至less维基百科条目)起源于扩展Internet邮件,特别是SMTP。 从那里开始,MIME和MIME风格的扩展devise已经进入许多其他协议(如HTTP),并且在现有协议中需要传输新的元数据或数据时仍然在使用。 有数十个RFC讨论MIME用于过多的目的。

具体来说, Content-Type:是几个MIME标题之一。 “Mimetype”确实听起来已经过时了,但是对MIME本身的引用却不是。 如果你愿意的话,可以向后兼容。

[顺便说一下,这纯粹是一个术语问题,与语法毫无关系。 归档“语法”下的每个使用问题是我的宠儿。 GRRRR]

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

EG text/html; charset=UTF-8 text/html; charset=UTF-8

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

EG application/msword

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

如果你想知道细节见票3526 。

引用:

将content_type作为mimetype的别名添加到HttpResponse构造函数中。 这是一个更准确的名字。 基于Simon Willison的补丁。 完全向后兼容。

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

向后兼容性,基于您的报价从文档。