【问题标题】:What's the difference of ContentType and MimeTypeContentType 和 MimeType 有什么区别
【发布时间】:2011-03-28 00:19:11
【问题描述】:

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

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

这让我很惊讶两人相处得很好。官方文档能够以实用的方式解决该问题:

content_type 是 mimetype 的别名。 从历史上看,这个参数只是 称为 mimetype,但因为这是 实际上包含在 HTTP Content-Type 头,也可以 包括字符集编码, 这使它不仅仅是一个 MIME 类型规范。如果 mimetype 是 指定(不是无),该值为 用过的。否则,使用 content_type。 如果两者都没有给出,则 使用 DEFAULT_CONTENT_TYPE 设置。

但是,我觉得它的解释不够清楚。为什么我们对(几乎相同的)事物使用 2 种不同的命名? “Content-Type”只是浏览器请求中使用的一个名称,在它之外几乎没有使用吗?

两者之间的主要区别是什么,什么时候调用 mimetype 而不是 content-type 是正确的?我是不是很吝啬和语法纳粹?

【问题讨论】:

    标签: python django content-type mime-types


    【解决方案1】:

    为什么我们使用 2 种不同的命名方式 (几乎相同)的东西?是 “Content-Type”只是一个名称 浏览器请求,而且很少 在外面用吗?

    两者的主要区别是什么 每个人,什么时候打电话 模仿类型而不是 内容类型 ?我是不是很可怜 语法纳粹?

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

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

    [顺便说一句,这纯粹是一个与语法无关的术语问题。在“语法”下提出每个使用问题是我的一个小烦恼。呸呸呸。]

    【讨论】:

      【解决方案2】:

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

      例如text/html; charset=UTF-8

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

      例如application/msword

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

      【讨论】:

      • 这是正确答案。设置响应 mime_type(不是 content_type)不会覆盖 charset,它保持为 UTF-8。
      • 有时简称为“媒体类型”,MIME 类型就是你所说的媒体类型。在某些规范中,我们将看到术语“可解析的 MIME 类型”,其中包括使用 Content-Type 标头中的属性。 Content-Type 的语法可以在这里找到:tools.ietf.org/html/rfc2045#section-5.1
      • 然而,在我看来,mime-type 是一个非常狭义的术语,仅限于邮件,而 content-type 是“内容类型”的简单英文。因此,在我看来,text/html 也是一种内容类型,即使人们倾向于称其为 MIME。此外,较新的名称media-type 更加模糊,因为媒体是 100 种不同的东西。 BBC是媒体! DVD是一种媒体!有人会争辩说,数据流不是“媒体”,而是“媒体”。
      【解决方案3】:

      如需了解详情,请看票3526

      引用:

      添加了 content_type 作为别名 HttpResponse 的 mimetype 构造函数。这是一个稍微更多 准确的名称。基于来自的补丁 西蒙·威利森。完全向后 兼容。

      【讨论】:

        【解决方案4】:

        为什么我们对(几乎相同的)事物使用两种不同的命名方式?

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

        【讨论】:

        • 没关系,我明白在 django 上添加它的实际原因。然而,问题的核心是为什么everyone这两个词这么混用,到底是否真的有区别。
        猜你喜欢
        • 2012-03-04
        • 2018-05-29
        • 2010-10-02
        • 2011-12-12
        • 2010-09-16
        • 2012-03-14
        • 2012-02-06
        • 2011-02-25
        相关资源
        最近更新 更多