ContentTypeとMimeTypeの違いは何ですか


103

私の知る限り、それらはまったく同じです。しかし、いくつかのdjangoドキュメントを閲覧すると、次のコードが見つかりました。

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

これは私が2人がお互いに仲良くしていることに驚きます。公式の文書は問題を実用的な方法で解決することができました:

content_typeは、mimetypeのエイリアスです。歴史的に、このパラメーターは単にmimetypeと呼ばれていましたが、これは実際にはHTTP Content-Typeヘッダーに含まれている値であるため、文字セットエンコーディングを含めることもでき、MIMEタイプの仕様だけではありません。mimetypeが指定されている場合(Noneではない)、その値が使用されます。それ以外の場合は、content_typeが使用されます。どちらも指定されていない場合、DEFAULT_CONTENT_TYPE設定が使用されます。

しかし、十分に解明されていないと思います。(ほとんど同じ)ものに2つの異なる名前を使用する理由 「Content-Type」はブラウザのリクエストで使用される名前であり、それ以外ではほとんど使用されませんか?

何各1との主な違いだし、何かを呼び出すことが右のときmimetypeとは反対にcontent-type?私は下品で文法ナチですか?

回答:


54

(ほとんど同じ)ものに2つの異なる名前を使用する理由 「Content-Type」はブラウザのリクエストで使用される名前であり、それ以外ではほとんど使用されませんか?

それぞれの主な違いは何ですか?content-typeではなくいつmimetypeを呼び出すのが適切ですか?私は下品で文法ナチですか?

その理由は、下位互換性だけではありません。恐らく、通常は優れたDjangoのドキュメントは、それについて少し手を振っています。MIME(少なくともWikipediaのエントリを読む価値はあります)は、インターネットメール、特にSMTPを拡張することに由来しています。そこから、MIMEおよびMIMEにインスパイアされた拡張設計は、他の多くのプロトコル(ここではHTTPなど)にも取り入れられ、既存のプロトコルで新しい種類のメタデータまたはデータを送信する必要がある場合にも使用されます。多数の目的で使用されるMIMEについて説明するRFCは数十あります。

具体的にContent-Type:は、いくつかのMIMEヘッダーの1つです。「Mimetype」は確かに時代遅れに聞こえますが、MIME自体への参照は時代遅れではありません。必要に応じて、その部分を下位互換性と呼びます。

[ところで、これは純粋に用語の問題であり、文法とは何の関係もありません。「文法」の下ですべての使用法の質問を提出することは私のうんざりです。]


49

私は常にcontentTypeをmimeTypeのスーパーセットであると見なしてきました。唯一の違いは、オプションの文字セットエンコーディングです。contentTypeにオプションの文字セットエンコーディングが含まれていない場合、mimeTypeと同じです。それ以外の場合、mimeTypeは、文字セットのエンコードシーケンスの前のデータです。

例えば text/html; charset=UTF-8

text/htmlis mimeType
;is is the additional parameters indicator
charset=UTF-8is the character set encoding parameter

例えば application/msword

application/mswordこれはmimeType です。文字を直接
構成しoctet-streamない整形式を記述するため、文字セットエンコーディングを使用できません。


1
これが正解です。応答mime_type(content_typeではない)を設定しても、charsetはオーバーライドされず、UTF-8のままになります。
Mikko Ohtamaa 2014

単に「メディアタイプ」と呼ばれることもあります。MIMEタイプは、メディアのタイプと同じです。特定の仕様では、「解析可能なMIMEタイプ」という用語が表示されます。これには、Content-Typeヘッダーのプロパティの使用が含まれます。の構文はContent-Typeここにあります:tools.ietf.org/html/rfc2045#section-5.1
Josh Habdas

それでも、私の見解では、mime-typeは非常に狭い用語であり、メールに限定されます。一方、content-typeは「コンテンツのタイプ」を表す単純な英語です。だから、私の見方でtext/htmlは、人々がそれをMIMEと呼ぶ傾向があるとしても、コンテンツタイプでもあります。また、media-typeメディアは100の異なるものであるため、新しい名前はさらにあいまいです。BBCはメディアです!DVDはメディアです!また、データのストリームは「メディア」ではなく「メディア」であると主張する人もいます。
user2173353

4

詳細を知りたい場合は、チケット3526を参照してください。

見積もり:

content_typeをmimetypeのエイリアスとしてHttpResponseコンストラクターに追加しました。少し正確な名前です。Simon Willisonのパッチに基づいています。完全な下位互換性があります。


0

(ほとんど同じ)ものに2つの異なる名前を使用する理由

ドキュメントからの引用に基づく下位互換性。


それは大丈夫です、私はそれをジャンゴに追加する実際的な理由を理解しました。しかし、問題の核心は、なぜ誰もが2つの単語をこのように混合して使用するのか、そして結局実際に違いがあるのか​​どうかです。
Frangossauro、2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.