[54] [DFN[MIME sniffing]] は、[[ファイル]]の[[内容]]の一部を使って
[[MIME型]]を決定する[[操作][sniffing]]です。

* 仕様書

[REFS[
- [32] [CITE[MIME Sniffing]] ([TIME[2011-11-27 08:05:14 +09:00]] 版) <https://mimesniff.spec.whatwg.org/>
-- [50] [CITE@en[MIME Sniffing Standard]] ([TIME[2017-03-09 23:51:04 +09:00]]) <https://mimesniff.spec.whatwg.org/#mime-type-sniffing-algorithm>
- [132] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-05-05 18:17:33 +09:00]]) <https://html.spec.whatwg.org/#the-object-element>
]REFS]

* 文脈

[61] [[fetch]] の結果 [[MIME sniffing]] が行われる場面については、
[[fetch]] を参照。

[62] その他に、 [CODE(DOMm)@en[[[createImageBitmap]]]] で [CODE(DOMi)@en[[[Blob]]]] 
の場合にも、[[rules for sniffing images specifically]] が行われます。

[HISTORY[
[103] かつては [[Widgets]] の [[MIME型]]の決定でも参照されていました。
]HISTORY]

* プロトコル

[FIG(middle list)[
- [CODE(HTTP)@en[Content-Type:]]
-- [[supplied MIME type]]
- [CODE(HTTP)@en[[[X-Content-Type-Options:]]]]
]FIG]

** sniffing 手法の選択

[51] [VAR[応答]]の[DFN[[RUBYB[算出MIME型]@en[computed MIME type]]]]は、
[DFN[MIME type sniffing algorithm]] により次のように決定されます [SRC[>>50]]。

[FIG(steps)[
= [142] [VAR[no-sniff flag]] を、[VAR[応答]]に関する [[no-sniff flag]] に設定します。
= [63] [VAR[型]]と [VAR[check-for-apache-bug flag]] を、
[VAR[応答]]の [[supplied MIME type detection algorithm]] の結果に設定します。
= [69] [VAR[型]]が [CODE[null]] か、
[VAR[型]]の [F[MIME type portion]] が
[CODE[unknown/unknown]],
[CODE[application/unknown]],
[CODE[*/*]] のいずれかの場合:
[DFN[rules for identifying an unknown MIME type]]、
== [82] [VAR[[DFN[sniff-scriptable flag]]]] を、 [VAR[no-sniff flag]] の[[否定]]に設定します。
== [115] [VAR[sniff-scriptable flag]] が[[真]]の場合、
=== [128] [VAR[条件]]を、「未知」に設定します。
== [129] それ以外の場合、
=== [130] [VAR[条件]]を、「未知 ([VAR[no-sniff flag]])」に設定します。
= [53] それ以外で、 [VAR[no-sniff flag]] が[[真]]の場合、
== [97] [VAR[条件]]を、「[VAR[no-sniff flag]]」に設定します。
= [98] それ以外で、 [VAR[check-for-apache-bug flag]] が[[真]]の場合:
[DFN[rules for distinguishing if a resource is text or binary]]、
== [116] [VAR[条件]]を、「[VAR[check-for-apache-bug flag]]」に設定します。
= [105] それ以外で、 [VAR[型]]が [[XML MIME型]]の場合、
== [106] [VAR[条件]]を、「[[XML MIME型]]」に設定します。
= [107] それ以外で、 [VAR[型]]の [F[MIME type portion]] が
[CODE(MIME)@en[text/html]] の場合、
== [117] [VAR[条件]]を、「[CODE(MIME)@en[text/html]]」に設定します。
= [108] それ以外で、[VAR[型]]が[[利用者エージェント]]の対応する[[画像型]]の場合、
== [118] [VAR[条件]]を、「[[画像型]]」に設定します。
= [111] それ以外で、[VAR[型]]が[[利用者エージェント]]の対応する[[音声または動画型]]の場合、
== [119] [VAR[条件]]を、「[[音声または動画型]]」に設定します。
= [204] それ以外の場合、
== [205] [VAR[条件]]を、「その他」に設定します。
= [124] [VAR[条件]]を、[VAR[型]]についての表 (>>127) の「対象」が「全」で「条件」[[列]]が[VAR[条件]]の[[行]]に設定します。
= [126] [VAR[応答]]について[VAR[条件]]の sniffing (>>125) を実行した結果を返します。
]FIG]

[133] [CODE(HTMLe)@en[object]] [[要素]]では、
[VAR[応答]]について次のようにします [SRC[>>132]]。

[FIG(steps)[
= [143] [VAR[no-sniff flag]] を、[VAR[応答]]に関する [[no-sniff flag]] に設定します。
= [144] [VAR[型]]を、[VAR[応答]]の [[supplied MIME type detection algorithm]] の結果に設定します。
= [135] [VAR[型]]が [CODE[null]] の場合、
== [134] [VAR[sniff-scriptable flag]] を、 [VAR[no-sniff flag]] の[[否定]]に設定します。
== [145] [VAR[sniff-scriptable flag]] が[[真]]の場合、
=== [146] [VAR[条件]]を、「未知」に設定します。
== [147] それ以外の場合、
=== [148] [VAR[条件]]を、「未知 ([VAR[no-sniff flag]])」に設定します。
= [136] それ以外の場合、
== [137] [VAR[型]]の [F[MIME type portion]] が [CODE(MIME)@en[text/plain]] の場合、
=== [138] [VAR[条件]]を、「[CODE(MIME)@en[text/plain]]」に設定します。
== [141] それ以外の場合、
=== [139] [VAR[条件]]を、「その他」に設定します。
= [140] [VAR[条件]]を、[VAR[型]]についての表 (>>127) の「対象」が「[CODE(HTMLe)@en[object]]」で「条件」[[列]]が[VAR[条件]]の[[行]]に設定します。
= [149] [VAR[応答]]について[VAR[条件]]の sniffing (>>125) を実行した結果を返します。
]FIG]

[131] [VAR[応答]]について [DFN[rules for sniffing images specifically]]
は、次のようにします [SRC[>>50]]。

[FIG(steps)[
= [150] [VAR[型]]を、[VAR[応答]]の [[supplied MIME type detection algorithm]] の結果に設定します。
= [151] [VAR[型]]が [[XML MIME型]]の場合、
== [152] [VAR[条件]]を、「[[XML MIME型]]」に設定します。
= [153] それ以外の場合、
== [154] [VAR[条件]]を、「その他」に設定します。
= [155] [VAR[条件]]を、[VAR[型]]についての表 (>>127) の「対象」が「[[画像型]]」で「条件」[[列]]が[VAR[条件]]の[[行]]に設定します。
= [156] [VAR[応答]]について[VAR[条件]]の sniffing (>>125) を実行した結果を返します。
]FIG]

[157] [VAR[応答]]について [DFN[rules for sniffing audio and video specifically]]
は、次のようにします [SRC[>>50]]。

[FIG(steps)[
= [158] [VAR[型]]を、[VAR[応答]]の [[supplied MIME type detection algorithm]] の結果に設定します。
= [159] [VAR[型]]が [[XML MIME型]]の場合、
== [160] [VAR[条件]]を、「[[XML MIME型]]」に設定します。
= [161] それ以外の場合、
== [162] [VAR[条件]]を、「その他」に設定します。
= [163] [VAR[条件]]を、[VAR[型]]についての表 (>>127) の「対象」が「音声・動画」で「条件」[[列]]が[VAR[条件]]の[[行]]に設定します。
= [164] [VAR[応答]]について[VAR[条件]]の sniffing (>>125) を実行した結果を返します。
]FIG]

[165] [VAR[応答]]について [DFN[rules for sniffing fonts specifically]]
は、次のようにします [SRC[>>50]]。

[FIG(steps)[
= [166] [VAR[型]]を、[VAR[応答]]の [[supplied MIME type detection algorithm]] の結果に設定します。
= [167] [VAR[型]]が [[XML MIME型]]の場合、
== [168] [VAR[条件]]を、「[[XML MIME型]]」に設定します。
= [169] それ以外の場合、
== [170] [VAR[条件]]を、「その他」に設定します。
= [171] [VAR[条件]]を、[VAR[型]]についての表 (>>127) の「対象」が「フォント」で「条件」[[列]]が[VAR[条件]]の[[行]]に設定します。
= [172] [VAR[応答]]について[VAR[条件]]の sniffing (>>125) を実行した結果を返します。
]FIG]

[191] [VAR[応答]]について[DFN[テキストトラックのsniffing]]
は、次のようにします ([[仕様書]]なし: >>190 参照)。

[FIG(steps)[
= [192] [VAR[型]]を、[VAR[応答]]の [[supplied MIME type detection algorithm]] の結果に設定します。
= [193] [VAR[型]]が [[XML MIME型]]の場合、
== [194] [VAR[条件]]を、「[[XML MIME型]]」に設定します。
= [195] それ以外の場合、
== [196] [VAR[条件]]を、「その他」に設定します。
= [197] [VAR[条件]]を、[VAR[型]]についての表 (>>127) の「対象」が「テキストトラック」で「条件」[[列]]が[VAR[条件]]の[[行]]に設定します。
= [198] [VAR[応答]]について[VAR[条件]]の sniffing (>>125) を実行した結果を返します。
]FIG]



[FIG(table)[ [127] 実施する sniffing の種別 (「場面」は最初に一致したものが該当)

:target: 対象
:context: 条件
:scriptable: scriptable
:non-scriptable: 非 scriptable
:bom: [[BOM]]
:feed or HTML: [[feed or HTML][rules for distinguishing if a resource is a feed or HTML]]
:image: [[画像][image type pattern matching algorithm]]
:audio or video: [[音声・動画][audio or video type pattern matching algorithm]]
:archive: [[書庫][archive type pattern matching algorithm]]
:font: [[フォント][font type pattern matching algorithm]]
:texttrack: [[テキストトラック]]
:binary: [[バイナリー][binary data bytes]]
:default: 既定値

:target: [[全][MIME type sniffing algorithm]]
:context: 未知 ([VAR[no-sniff flag]])
:non-scriptable: ○
:bom: ○
:image: ○
:audio or video: ○
:archive: ○
:binary: [[○][application/octet-stream]]
:default: [CODE[text/plain]]

:target: [[全][MIME type sniffing algorithm]]
:context: 未知
:scriptable: ○
:non-scriptable: ○
:bom: ○
:image: ○
:audio or video: ○
:archive: ○
:binary: [[○][application/octet-stream]]
:default: [CODE[text/plain]]

:target: [[全][MIME type sniffing algorithm]]
:context: [VAR[check-for-apache-bug flag]]
:bom: ☆
:binary: [[○][application/octet-stream]]
:default: [CODE[text/plain]]

:target: [[全][MIME type sniffing algorithm]]
:context: [VAR[no-sniff flag]]
:default: [VAR[型]]

:target: [[全][MIME type sniffing algorithm]]
:context: [[XML MIME型]]
:default: [VAR[型]]

:target: [[全][MIME type sniffing algorithm]]
:context: [CODE(MIME)@en[text/html]]
:feed or HTML: ○

:target: [[全][MIME type sniffing algorithm]]
:context: [[画像型]]
:image: ○
:default: [VAR[型]]

:target: [[全][MIME type sniffing algorithm]]
:context: [[音声または動画型]]
:audio or video: ○
:default: [VAR[型]]

:target: [[全][MIME type sniffing algorithm]]
:context: その他
:default: [VAR[型]]

:target: [[画像][rules for sniffing images specifically]]
:context: [[XML MIME型]]
:default: [VAR[型]]

:target: [[画像][rules for sniffing images specifically]]
:context: その他
:image: ○
:default: [VAR[型]]

:target: [[音声・動画][rules for sniffing audio and video specifically]]
:context: [[XML MIME型]]
:default: [VAR[型]]

:target: [[音声・動画][rules for sniffing audio and video specifically]]
:context: その他
:audio or video: ○
:default: [VAR[型]]

:target: [[フォント][rules for sniffing fonts specifically]]
:context: [[XML MIME型]]
:default: [VAR[型]]

:target: [[フォント][rules for sniffing fonts specifically]]
:context: その他
:font: ○
:default: [VAR[型]]

:target: [[テキストトラック][テキストトラックのsniffing]]
:context: [[XML MIME型]]
:default: [VAR[型]]

:target: [[テキストトラック][テキストトラックのsniffing]]
:context: その他
:texttrack: ○
:default: [VAR[型]]

:target: [CODE(HTMLe)@en[object]]
:context: なし ([VAR[no-sniff flag]])
:non-scriptable: ○
:bom: ○
:image: ○
:audio or video: ○
:archive: ○
:binary: [[○][application/octet-stream]]
:default: [CODE[text/plain]]

:target: [CODE(HTMLe)@en[object]]
:context: なし
:scriptable: ○
:non-scriptable: ○
:bom: ○
:image: ○
:audio or video: ○
:archive: ○
:binary: [[○][application/octet-stream]]
:default: [CODE[text/plain]]

:target: [CODE(HTMLe)@en[object]]
:context: [CODE(MIME)@en[text/plain]]
:bom: ☆
:binary: [[○][application/octet-stream]]
:default: [CODE[text/plain]]

:target: [CODE(HTMLe)@en[object]]
:context: その他
:default: [VAR[型]]

]FIG]

[199] 他に、[[古典スクリプトのfetch]]、
[[CSS]] ([[奇癖モード]])、
[[cache manifest]]
では[[MIME型]]の指定があっても無視されます。 ([[内容]]の検査は行いません。)
[[cache manifest]] については [CITE[HTML Standard]]
に将来他の [[MIME型]]が必要になれば [[sniffing]] することになるだろうとの注記があります
(が、 [[AppCache]] は[[廃止]]されつつあるので、今後もなさそうです)。

** sniffing

[125] [VAR[応答]]について[VAR[条件]]の sniffing は、次のようにします。

[FIG(steps)[
= [173] [VAR[条件]]の「scriptable」が適用される場合、
==
@@
= [174] [VAR[条件]]の「非 scriptable」が適用される場合、
==
@@
= [203] [VAR[条件]]の「[[BOM]]」が「○」の場合、
==
@@
= [175] [VAR[条件]]の「[[BOM]]」が「☆」の場合、
==
@@
= [176] [VAR[条件]]の「feed or HTML」が適用される場合、
==
@@ [[rules for distinguishing if a resource is a feed or HTML]]
= [177] [VAR[条件]]の「画像」が適用される場合、
==
@@ [[image type pattern matching algorithm]]
== [109] [VAR[結果]]が [CODE[null]] でない場合、
=== [110] [VAR[結果]]を返し、ここで停止します。
= [178] [VAR[条件]]の「音声・動画」が適用される場合、
==
@@ [[audio or video type pattern matching algorithm]]
== [112] [VAR[結果]]が [CODE[null]] でない場合、
=== [113] [VAR[結果]]を返し、ここで停止します。
= [179] [VAR[条件]]の「書庫」が適用される場合、
==
@@ [[archive type pattern matching algorithm]]
== [120] [VAR[結果]]が [CODE[null]] でない場合、
=== [121] [VAR[結果]]を返し、ここで停止します。
= [180] [VAR[条件]]の「フォント」が適用される場合、
==
@@ [[font type pattern matching algorithm ]]
== [181] [VAR[結果]]が [CODE[null]] でない場合、
=== [182] [VAR[結果]]を返し、ここで停止します。
= [200] [VAR[条件]]の「テキストトラック」が適用される場合 [SRC[[[仕様書]]なし]]、
==
@@ 先頭6バイトが [CODE[WEBVTT]] なら、 [CODE(MIME)@en[text/vtt]]
== [201] [VAR[結果]]が [CODE[null]] でない場合、
=== [202] [VAR[結果]]を返し、ここで停止します。
= [183] [VAR[条件]]の「バイナリー」が適用される場合、
==
@@ [[binary data bytes]] を含む場合、
=== [123] [CODE(MIME)@en[application/octet-stream]] を返し、ここで停止します。
= [184] [VAR[条件]]の「既定値」を返します。
]FIG]

* 関連

[25] [[Web]] 以外における [[MIME型]]の [[sniffing]] については、
[[sniffing]] の項を参照。

[263] 
関連: 
[[text/*]]

* 歴史

[55] [[IE]] は古くから [CODE(HTTP)@en[[[Content-Type:]]]] ヘッダーを一部無視して[[拡張子]]を使ったり
[[sniffing]] したりしており、それによって他の [[Webブラウザー]]と異なる解釈をしたり、
それによって (本来の仕様上は問題ないはずのもので) [[セキュリティー]]上の問題を引き起こしたりして非難されていました。
しかし間違った [CODE(HTTP)@en[[[Content-Type:]]]] を送出する[[起源鯖]]も広く存在しており、
また他のブラウザーも [CODE(HTMLe)@en[[[script]]]] の [CODE(HTTP)@en[[[Content-Type:]]]]
を無視したり、 [CODE(HTMLe)@en[[[img]]]] では [[sniffing]] を行ったりしていて、
[[sniffing]] を排除することは最早できない状況でした。

[EG[
[247] [[IE]] は [CODE[text/plain]] であっても[[HTMLタグ]]らしきものが含まれている時
[[HTML]] とみなす場合がありました。
]EG]

[EG[
[248] [[IE]] は特定の条件を満たす [CODE[text/html]] の[[文書]]を
[[XML構文解析器]]で処理していました。
]EG]

[SEE[ [[HTML/XML sniffing]] ]]

[56] そうはいっても各 [[Webブラウザー]]が独自に異なる [[sniffing]] を行って標準仕様が存在しない状況では、
サーバー側で[[セキュリティー]]上の問題を回避するための十分な対策を施すのも困難 (何をもって十分としてよいかすらわからない状態)
でありました。


[264] 
[CITE[MENU]], [TIME[2004-06-21T10:38:22.000Z]], [TIME[2024-08-17T13:40:37.939Z]] <http://ww32.tiki.ne.jp/~hiro-strider/shoukai.html>

[265] >>264 これのリンク先の半分くらいは [CODE[text/plain]] でHTMLソースが見えるのだけど、
昔の [[IE]] で見ていたときは [[HTML]] 表示されていたのだろうなあ。

** Web Applications 1.0

[57] 2007年頃になってようやく [[Ian Hickson]] によって [[WHATWG]] [[Web Applications 1.0]] (後の [[HTML5]]、
現在の [[HTML Standard]]) で [[Webブラウザー]]が実装するべき [[sniffing]] の規則が正確かつ詳細に規定されるようになりました。

[189] 当初は [CODE(HTTP)@en[Content-Encoding:]] [[ヘッダー]]の有無も結果に影響していましたが、
削除されました。

** IETF

[58] その後 [[IETF]] と [[W3C]] の圧力によって [[sniffing]] は [[HTML5]] 仕様書から切り離され、
この分野の専門家である [[Adam Barth]] による [[Internet Draft]] として [[IETF]] で出版されるようになりました。

-*-*-

[71] [[RFC 7231]] は、 [CODE(HTTP)@en[[[Content-Type:]]]] [[ヘッダー]]が無い場合に
[[sniffing]] を認めています [SRC[>>72]]。それ以外でも [[sniffing]] 
が行われる現実も認めた上で、実装によって解釈が異なることはセキュリティー上のリスクであるとし、
[[sniffing]] を無効にするオプションの提供を[RUBYB[推奨]@en[encourage]]しています [SRC[>>72]]。

[REFS[
- [72] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-3.1.1.5>
]REFS]

;; [73] 任意に[[利用者]]が有効にしたり無効にしたりできるのも、危険だと思うのですが・・・。

[81] [[HTTP/0.9]] でも、[[sniffing]] や[[拡張子]]による推測が認められています [SRC[>>80]]。

[REFS[
- [80] [CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2014-09-07 13:12:32 +09:00]] 版) <http://tools.ietf.org/html/rfc1945#section-7.2.1>
]REFS]

**

[1]
[CITE[葉っぱ日記 - 「拡張子ではなく、内容によってファイルを開くこと」の拡張子は Content-Type ではないことに注意]] ([CODE[2007-04-04 15:46:35 +09:00]] 版) <http://d.hatena.ne.jp/hasegawayosuke/20070404/p1>
([[名無しさん]] [WEAK[2007-04-04 23:46:23 +00:00]])

[2]
[CITE@en[Re: Proposed Design Principles updated]] ([[Ian Hickson]] 著, [CODE[2007-04-05 14:51:37 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-html/2007Apr/0232.html>

> One browser started ignoring CSS files in one very specific 
case, namely only if the document had a DOCTYPE that, at the time, was 
basically unused. (I was one of the two people pushing for this.) It broke 
some sites, but comparatively few in the grand scheme of things. (Though 
we still get bug reports about this today, so maybe it wasn't that good an 
idea after all.)

([[名無しさん]])


[3]
[CITE[Mime sniffing data]] ([[Adam Barth <whatwg@...>]] 著, [TIME[2008-10-09 01:34:49 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/15882>

[207] [CITE[Content Sniffing Data (as of September 26, 2008)]] ([TIME[2009-01-13 01:55:16 +09:00]]) <http://crypto.stanford.edu/~abarth/research/html5/content-sniffing/>

[4] [CITE[Content-Type Processing Model]]
[CODE[draft-abarth-mime-sniff-01]] ([TIME[2009-01-10 07:14:52 +09:00]] 版) <http://webblaze.cs.berkeley.edu/2009/mime-sniff/mime-sniff.txt>

[5] [CITE@en[Sam Ruby: Mime Sniff]] ([TIME[2009-01-12 10:24:59 +09:00]] 版) <http://intertwingly.net/blog/2009/01/09/Mime-Sniff>

[6] [CITE[IRC logs: freenode / #whatwg / 20090927]]
([TIME[2009-11-30 23:26:32 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090927#l-135>

[7] [CITE[IRC logs: freenode / #whatwg / 20090927]]
([TIME[2009-11-30 23:26:32 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090927#l-320>

[8] [CITE[IRC logs: freenode / #whatwg / 20090929]]
([TIME[2009-12-02 08:29:55 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090929#l-357>

[9] [CITE[Bug 8479 – http content-type override mandatory for <object>]]
([TIME[2010-01-10 22:59:48 +09:00]] 版)
<http://www.w3.org/Bugs/Public/show_bug.cgi?id=8479>

[10] [CITE@en[HTML5 Revision Tracker]]
([TIME[2010-04-14 21:50:48 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=5041&to=5042>

[11] [CITE[''''''[''''''whatwg'''''']'''''' Video with MIME type application/octet-stream]]
( ([TIME[2010-09-02 00:45:32 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-August/028291.html>

[12] [CITE[IRC logs: freenode / #whatwg / 20100825]]
( ([TIME[2010-09-04 09:44:11 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20100825#l-1199>

[13] [CITE@en[Speech Synthesis Markup Language (SSML) Version 1.1]]
( ([TIME[2010-09-08 00:26:19 +09:00]] 版))
<http://www.w3.org/TR/2010/REC-speech-synthesis11-20100907/#lexicon_type>

[14] [CITE['''['''whatwg''']''' Video with MIME type application/octet-stream]]
([TIME[2010-12-09 18:00:19 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-December/029393.html>

[15] [CITE@en[Web Applications 1.0 r5836     Bring the spec more in line with what the browsers do for video (largely, ignoring Content-Type). This will probably be tweaked further once Adam's draft has a section dedicated to sniffing media container formats.]]
( ([TIME[2011-02-05 10:31:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5835&to=5836>

[16] [CITE[''''''[''''''websec'''''']'''''' Font sniffing]]
( ([TIME[2011-01-28 00:21:17 +09:00]] 版))
<http://www.ietf.org/mail-archive/web/websec/current/msg00235.html>

[17] [CITE@en[Web Applications 1.0 r5921     revert r5836 per http://lists.w3.org/Archives/Public/public-html/2011Mar/0002.html]]
( ([TIME[2011-03-01 09:18:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5920&to=5921>

[18] [CITE@en[Re: Request for revert on bug 11984]]
( ([[Ian Hickson]] 著, [TIME[2011-03-01 09:14:52 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-html/2011Mar/0002.html>

[19] [CITE[IRC logs: freenode / #whatwg / 20110123]]
( ([TIME[2011-03-05 11:46:54 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110123>

[20] [CITE[IRC logs: freenode / #whatwg / 20110124]]
( ([TIME[2011-03-05 23:14:05 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110124>

[21] [CITE[IRC logs: freenode / #whatwg / 20110127]]
( ([TIME[2011-03-10 07:30:55 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110127>

[22] [CITE[IRC logs: freenode / #whatwg / 20110205]]
( ([TIME[2011-03-19 23:45:14 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20110205#l-71>

[23] [CITE@en[Web Applications 1.0 r5979 10805]]
( ([TIME[2011-04-09 07:12:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5978&to=5979>

[24] [CITE[drafts/sniff.xml at master from abarth's ietf-websec - GitHub]]
( ([TIME[2011-02-13 13:01:23 +09:00]] 版))
<https://github.com/abarth/ietf-websec/blob/master/drafts/sniff.xml>

[206] >>24 は [CODE[404]] だがその後の改訂版がここに:
[CITE@en[websec/sniff.html at master · abarth/websec]] ([TIME[2017-05-09 12:38:45 +09:00]]) <https://github.com/abarth/websec/blob/master/drafts/sniff.html>

** MIME Sniffing Standard

[59] しかしその作業も停滞していたことから 2012年、 [[Gordon P. Hemsley]] が引き取って再び [[WHATWG]]
で [[Living Standard]] として出版されるようになりました。

;; [60] 同じような経緯で [[W3C]] に行った仕様書はその後 [[WHATWG]] で作業が再開された後 [[W3C]]
が劣化コピーを発行し続ける例が多いですが、 [[IETF]] はそういうことはしていません。

[26] [CITE[MIME Sniffing]]
( ([TIME[2011-09-27 05:18:56 +09:00]] 版))
<http://mimesniff.spec.whatwg.org/>

[27] [CITE@en[Web Applications 1.0 r6721     (WIP - MIMESNIFF has not yet been updated accordingly) Change the spec to use MIMESNIFF rules for text tracks instead of blindly honouring MIME types.]]
( ([TIME[2011-10-21 08:27:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6720&to=6721>

[190] [CITE@en[13995 – <track> Don't check Content-Type for <track>]] ([TIME[2017-05-07 17:09:59 +09:00]]) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=13995>

[28] [CITE@en[Web Applications 1.0 r6823     Make appcache no longer check for the MIME type.]]
( ([TIME[2011-11-11 09:36:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6822&to=6823>

[29] [CITE@en[Web Applications 1.0 r6826 Add warnings about media elements and track and how to determine the type and how we don't know what hte solution is.]]
( ([TIME[2011-11-12 09:22:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6825&to=6826>

[30] [CITE@en[Web Applications 1.0 r6920 Remove vestiges of MIME type checking in appcache.Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=14701]]
( ([TIME[2012-01-26 08:27:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6919&to=6920>

[31] [CITE@en[Web Applications 1.0 r6990 Factor out the prescan algorithm for reuse in other specs.]]
( ([TIME[2012-02-14 06:06:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6989&to=6990>

[33] [CITE[IRC logs: freenode / #whatwg / 20120801]]
( ([TIME[2012-08-06 21:04:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120801#l-248>

[34] [CITE@en[Web Applications 1.0 r7360     Make a BOM override HTTP headers.]]
( ([TIME[2012-09-16 12:55:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7359&to=7360>

[35] [CITE[IRC logs: freenode / #whatwg / 20120928]]
( ([TIME[2012-10-03 22:06:16 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120928>

[36] [CITE[IRC logs: freenode / #whatwg / 20120928]]
( ([TIME[2012-10-03 22:06:16 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120928>

[37] [CITE[whatwg/mimesniff]]
( ([TIME[2012-10-03 22:39:05 +09:00]] 版))
<https://github.com/whatwg/mimesniff>

[38] [CITE[''''''[''''''whatwg'''''']'''''' '''['''mimesniff''']''' Review requested on MIME Sniffing Standard]]
( ([TIME[2012-11-06 00:29:10 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-November/037787.html>

[REFS[
- [39] [CITE[Hosting - Google Chrome]] ([TIME[2012-11-18 01:28:56 +09:00]] 版) <http://developer.chrome.com/extensions/hosting.html>
]REFS]

[40] >>39 によると [[Chrome]] は未知の[[MIME型]]の sniffing で [CODE(MIME)@en[[[application/x-chrome-extension]]]]
にも対応しているようです。

[41] [CITE[Issue 7448 - chromium - CSS and JS files with MIME Type text/plain should still apply - An open-source browser project to help move the web forward. - Google Project Hosting]]
( ([TIME[2012-11-18 01:42:41 +09:00]] 版))
<http://code.google.com/p/chromium/issues/detail?id=7448>

[42] [CITE[IRC logs: freenode / #whatwg / 20121018]]
( ([TIME[2012-11-18 00:24:44 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121018#l-259>

[43] [CITE[IRC logs: freenode / #whatwg / 20121105]]
( ([TIME[2012-11-24 13:19:40 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121105#l-755>

[44] [CITE[IRC logs: freenode / #whatwg / 20121109]]
( ([TIME[2012-11-26 22:30:44 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121109>

[45] [CITE[Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)]]
( ([TIME[2012-11-22 21:22:20 +09:00]] 版))
<http://w3c.github.com/packed-webapps/packaging/#rule-for-identifying-the-media-type-of-a-file>

[46] [CITE@en[Web Applications 1.0 r7701     Revert part of r5545 because bz changed his mind and this matches reality better. :-)]]
( ([TIME[2013-02-07 08:10:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7700&to=7701>

[47] [CITE@en[Web Applications 1.0 r7701     Revert part of r5545 because bz changed his mind and this matches reality better. :-)]]
( ([TIME[2013-02-07 08:10:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7700&to=7701>

[48] [CITE@EN[Authoritative Metadata]]
( ([TIME[2013-04-05 19:44:14 +09:00]] 版))
<http://www.w3.org/2001/tag/doc/mime-respect-20130405.html>

[52] [CITE@en[Windows RSS Publisher's Guide (work-in-progress) - Microsoft RSS Blog - Site Home - MSDN Blogs]]
( ([TIME[2013-12-04 04:55:23 +09:00]] 版))
<http://blogs.msdn.com/b/rssteam/archive/2005/08/02/publishersguide.aspx>

[88] >>52 によると [[IE]] は [CODE(MIME)@en[[[text/xml]]]] が[[フィード]]か判定するために
[[sniffing]] しています。

[89] [CITE@en-US[XSL Transformations in Mozilla FAQ | MDN]] ([TIME[2014-03-22 05:56:30 +09:00]] 版) <https://developer.mozilla.org/en-US/docs/XSL_Transformations_in_Mozilla_FAQ>

[90] >>89 によると [[Firefox]] も [[IE]] と同様の [[sniffing]] を行っています。

[64] [CITE@en[Bug 11984 – <video>: Figure out the story with respect to honouring Content-Type headers vs sniffing content]]
( ([TIME[2013-12-14 11:48:15 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=11984>

[65] [CITE[IRC logs: freenode / #whatwg / 20131211]]
( ([TIME[2013-12-13 22:33:10 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20131211#l-870>

[66] [CITE[IRC logs: freenode / #whatwg / 20140121]]
( ([TIME[2014-01-23 20:23:43 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140121>

[67] [CITE[ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic]]
( ([TIME[2014-04-07 05:28:45 +09:00]] 版))
<https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L179>

[68] [CITE[ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic]]
( ([TIME[2014-04-07 05:38:10 +09:00]] 版))
<https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L885>

[70] [CITE@en[Bug 11984 – <video>: Figure out the story with respect to honouring Content-Type headers vs sniffing content]]
( ([TIME[2014-05-08 03:49:08 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=11984>

[74] [CITE@en[Tolerant HTTP Parsing]]
( ([TIME[2011-10-09 14:47:27 +09:00]] 版))
<http://stuff.gsnedders.com/http-parsing.html#rfc.section.B>

[78] [CITE[mimesniff]]
( ([TIME[2014-09-06 02:37:35 +09:00]] 版))
<http://news.dieweltistgarnichtso.net/bin/mimesniff.html>

[79] [CITE@en[''''''[''''''webappsec'''''']'''''' Rechartering: MIME-type sniffing]]
( ([[Brad Hill]] 著, [TIME[2014-11-10 09:01:08 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webappsec/2014Nov/0125.html>

** 媒体要素

[77] [[媒体要素]]にも [[sniffing]] を適用するべきか否かは意見の対立
[SRC[>>76]] から長らく未決とされてきましたが、
大勢が決した2014年8月には [[sniffing]] を行うよう [[HTML Standard]]
が変更されました [SRC[>>75]]。

[REFS[
- [76] [CITE@en[Bug 11984 – <video>: Figure out the story with respect to honouring Content-Type headers vs sniffing content]] ([TIME[2014-08-03 10:58:29 +09:00]] 版) <https://www.w3.org/Bugs/Public/show_bug.cgi?id=11984>
- [75] [CITE@en[Web Applications 1.0 r8696     Make <video> and <audio> sniff for their media data's MIME type, since most browsers seem to be going that way, and we need to pick a direction.]] ([TIME[2014-08-02 05:56:00 +09:00]] 版) <http://html5.org/r/8696>
]REFS]

[49] しかし[[テキストトラック]]に関しては、その後も未決のままとなっています。

**

[83] [CITE[Part2 - browsersec - Browser Security Handbook, part 2 - Browser Security Handbook - Google Project Hosting]]
([TIME[2015-03-31 16:45:19 +09:00]] 版)
<https://code.google.com/p/browsersec/wiki/Part2#Survey_of_content_sniffing_behaviors>

[84] [CITE[IRC logs: freenode / #whatwg / 20150331]]
([TIME[2015-04-01 11:13:49 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150331#l-397>

[85] [CITE[mime_util.cc - Code Search]]
([TIME[2015-04-04 11:22:49 +09:00]] 版)
<https://code.google.com/p/chromium/codesearch#chromium/src/net/base/mime_util.cc&rcl=1427945811&l=1>

[FIG(quote)[
[FIGCAPTION[
[86] [CITE[IRC logs: freenode / #whatwg / 20150408]]
([TIME[2015-04-09 11:51:32 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150408#l-380>
]FIGCAPTION]

> # '''['''10:41''']''' <philipj> for <track> there's just no code that looks at Content-Type, at least not in Blink, if it's not WebVTT then it won't work

]FIG]


[87] [CITE@en[Add MIME type whitelist for "track" (text/vtt). · whatwg/fetch@44f237a]]
([TIME[2015-04-09 23:41:48 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/44f237a3ac61c9e39561f82211e442da0e9f1638>

[91] [CITE@en[gecko-dev/nsUnknownDecoder.cpp at c01ab4a7c845716c0e5fdf1a7815ccfba3bbeb7a · mozilla/gecko-dev]]
([TIME[2015-05-07 20:17:36 +09:00]] 版)
<https://github.com/mozilla/gecko-dev/blob/c01ab4a7c845716c0e5fdf1a7815ccfba3bbeb7a/netwerk/streamconv/converters/nsUnknownDecoder.cpp>

[92] [CITE[Packaged Web Apps (Widgets) - Packaging and XML Configuration (Second Edition)]]
([TIME[2015-01-27 11:24:04 +09:00]] 版)
<http://w3c.github.io/packaged-webapps/packaging/#rule-for-identifying-the-media-type-of-a-file-0>

[93] [CITE[Issue 2016 - chromium - Chrome stalls XHRs in order to sniff mime-type - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-08-04 23:39:23 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=2016>

[94] [CITE[Issue 156023 - chromium - Transfer-Encoding chunked not support on text/plain - An open-source project to help move the web forward. - Google Project Hosting]]
([TIME[2015-08-04 23:39:29 +09:00]] 版)
<https://code.google.com/p/chromium/issues/detail?id=156023>

[95] [CITE@en[MIME Type Detection in Windows Internet Explorer (Windows)]]
([TIME[2015-09-26 02:04:47 +09:00]] 版)
<https://msdn.microsoft.com/en-us/library/ms775147(v=vs.85).aspx>

[96] [CITE@en-US[How Mozilla determines MIME Types | MDN]]
([TIME[2014-07-01 11:18:03 +09:00]] 版)
<https://developer.mozilla.org/en/docs/How_Mozilla_determines_MIME_Types>

[99] [CITE@en[Fix #305: Update spec link for "sniffed type of a resource" · whatwg/html@214c199]]
([TIME[2016-01-29 16:58:29 +09:00]] 版)
<https://github.com/whatwg/html/commit/214c199cbd7e709b7c15b59033f326ce8a464f2f>

[100] [CITE@en[Replace sniffed MIME type with computed MIME type · whatwg/html@2f58d1e]]
([TIME[2016-02-10 22:05:22 +09:00]] 版)
<https://github.com/whatwg/html/commit/2f58d1eb6a5eab442a7d31716c7fed7f8eb3f16f>

[101] [CITE@en[28100 – "sniffed MIME type" has been renamed to "computed MIME type" in mimesniff spec]]
([TIME[2016-02-10 22:05:49 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28100>

[102] [CITE@en[nosniff and images · Issue #395 · whatwg/fetch]]
([TIME[2016-12-20 19:05:42 +09:00]])
<https://github.com/whatwg/fetch/issues/395>

[104] [CITE@en[21467 - Cross site scripting through non-http servers - chromium - Monorail]]
([TIME[2017-01-22 13:37:01 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=21467>

[114] [CITE[HTML Standard]] によれば、
[[媒体文書]]の[F[内容型][document.contentType]] ([CODE[document.contentType]])
は[[算出MIME型]]に設定されることになっています。
[[Chrome]] では、 [CODE(HTTP)@en[Content-Type:]] に[[画像型]]が指定された場合には
[[supplied MIME type]] が設定され、
[CODE(HTTP)@en[Content-Type:]] がない場合には[[算出MIME型]]が設定されます。
[TIME[2017-05-07T06:57:42.400Z]]

[122] [CITE@en[Fix mp3 parsing]]
([[padenot]]著, [TIME[2016-11-11 17:40:40 +09:00]])
<https://github.com/whatwg/mimesniff/commit/d954dab75b86df066dd4b07795a93bd11a150b1a>

[186] [CITE@en[Add an algorithm to sniff for WebM properly]]
([[padenot]]著, [TIME[2013-07-30 20:25:47 +09:00]])
<https://github.com/whatwg/mimesniff/commit/b03894eea2955bddb2202e29ee185e7882e178ab>

[229] [[Chrome]] も [[go]] も、この変更を実装せず、最初の4バイトが一致すれば 
([[EBML]] なら) すべて [[WebM]] とみなすようです。
一方 [[Gecko]] は[[仕様書]]に近い実装になっているようです [SRC[>>232]]。 [TIME[2017-05-09T11:02:01.0Z]]

[185] [CITE@en[Add an algorithm to sniff MP3 without ID3]]
([[padenot]]著, [TIME[2016-03-03 01:32:46 +09:00]])
<https://github.com/whatwg/mimesniff/commit/998b959332e8dd372f06cfde23f48b4ed5e3567c>

[234] [[Gecko]] で実装されているようです。
[[Chrome]] と [[go]] では実装されていないようです。 [TIME[2017-05-09T11:20:09.600Z]]

[187] [CITE@en[Web compat does not require the Apache bug workaround to sniff beyond…]]
([[GPHemsley]]著, [TIME[2014-01-17 14:31:44 +09:00]])
<https://github.com/whatwg/mimesniff/commit/d7bafc16ee480a5dea4c27d60dd5272388e022ce>

[188] [CITE@en[No user agent resniffs archives that supply an archive type.]]
([[GPHemsley]]著, [TIME[2013-06-07 23:10:30 +09:00]])
<https://github.com/whatwg/mimesniff/commit/7e14fd221bf69c05b8584244dc04367d46d15c87>

[FIG(quote)[
[FIGCAPTION[
[208] [CITE@en[go/sniff.go at master · golang/go]]
([TIME[2017-05-09 12:44:54 +09:00]])
<https://github.com/golang/go/blob/master/src/net/http/sniff.go>
]FIGCAPTION]

> // DetectContentType implements the algorithm described
> // at http://mimesniff.spec.whatwg.org/ to determine the
> // Content-Type of the given data. It considers at most the
> // first 512 bytes of data. DetectContentType always returns
> // a valid MIME type: if it cannot determine a more specific one, it
> // returns "application/octet-stream".

]FIG]


[209] [CITE[Web::MIME::Sniffer]]
([TIME[2017-05-09 12:50:23 +09:00]])
<https://manakai.github.io/pod/Web/MIME/Sniffer>

[210] [CITE@en[Implement MIME sniffing · Issue #14024 · servo/servo]]
([TIME[2017-05-09 12:52:27 +09:00]])
<https://github.com/servo/servo/issues/14024>

[211] [CITE@en[Implement MIME sniffing · Issue #3144 · servo/servo]]
([TIME[2017-05-09 12:53:53 +09:00]])
<https://github.com/servo/servo/issues/3144>

[212] [CITE@en[Add context-based MIME sniffing · Issue #4183 · servo/servo]]
([TIME[2017-05-09 12:55:22 +09:00]])
<https://github.com/servo/servo/issues/4183>

[213] [CITE@en[M1456, Implement MIME sniffing initial Step by djzager · Pull Request #3766 · servo/servo]]
([TIME[2017-05-09 12:56:16 +09:00]])
<https://github.com/servo/servo/pull/3766>

[214] [CITE@en[Implemementing context-based MIME type sniffing by jdm · Pull Request #8190 · servo/servo]]
([TIME[2017-05-09 13:04:06 +09:00]])
<https://github.com/servo/servo/pull/8190>

[215] [CITE@en[fixes 4184: no-sniff and check-for-apache-bug for mime sniffing by eleweek · Pull Request #6171 · servo/servo]]
([TIME[2017-05-09 13:05:34 +09:00]])
<https://github.com/servo/servo/pull/6171>

[216] [CITE@en[Add MIME sniffing for images. · Issue #124 · Kozea/WeasyPrint]]
([TIME[2017-05-09 13:07:39 +09:00]])
<https://github.com/Kozea/WeasyPrint/issues/124>

[217] [CITE@en[bitinn/doc-sniff: A helper for combating incorrect content-type, aka a mime sniffing module for node.js]]
([TIME[2017-05-09 13:09:33 +09:00]])
<https://github.com/bitinn/doc-sniff>

[218] [CITE@en[Do content-sniffing for HTML · Issue #566 · qutebrowser/qutebrowser]]
([TIME[2017-05-09 13:11:13 +09:00]])
<https://github.com/qutebrowser/qutebrowser/issues/566>

[219] [CITE@en[net/http: sniff extra mimes could be added · Issue #13383 · golang/go]]
([TIME[2017-05-09 13:12:26 +09:00]])
<https://github.com/golang/go/issues/13383>

[220] [CITE@en[2016 - Fetch / XHRs get stalled due to mime type sniffing - chromium - Monorail]]
([TIME[2017-05-09 13:15:54 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=2016>

[221] [CITE@en[352250 - Files.app: Refer to mime type when collecting applications to open files on Download directory. - chromium - Monorail]]
([TIME[2017-05-09 13:17:55 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=352250>

[222] [CITE@en[579915 - Ogg container format should be sniffed as application/ogg instead of audio/ogg. - chromium - Monorail]]
([TIME[2017-05-09 13:19:11 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=579915>

[223] [CITE@en[536912 - doesn't load svg background image if mime type not provided in header. - chromium - Monorail]]
([TIME[2017-05-09 13:20:21 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=536912>

[224] [CITE@en[24376 – image/svg+xml missing from image & unknown type patterns]]
([TIME[2017-05-09 13:20:38 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=24376>

[225] [CITE@en[878922 - imgLoader::GetMimeTypeFromContent should support SVG images]]
([TIME[2017-05-09 13:21:33 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=878922>

[226] [CITE@en[108310 - Detection of chrome extension files has regressed - chromium - Monorail]]
([TIME[2017-05-09 13:23:08 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=108310>

[227] [CITE@en[net/base/mime_sniffer.cc - chromium/src - Git at Google]]
([TIME[2017-05-09 13:29:16 +09:00]])
<https://chromium.googlesource.com/chromium/src/+/master/net/base/mime_sniffer.cc>

[228] [CITE@en[padenot/webm-sniff: A simple C program to sniff WebM files properly.]]
([TIME[2017-05-09 18:13:46 +09:00]])
<https://github.com/padenot/webm-sniff/>

[230] [CITE@en[MIME Sniffing - WHATWG Wiki]]
([TIME[2014-10-12 01:45:34 +09:00]])
<https://wiki.whatwg.org/wiki/MIME_Sniffing>

[231] [CITE@en-US[nsMediaSniffer.cpp - DXR]]
([TIME[2017-05-09 20:03:15 +09:00]])
<https://dxr.mozilla.org/mozilla-central/source/toolkit/components/mediasniffer/nsMediaSniffer.cpp>

[232] [CITE@en-US[nestegg.c - DXR]]
([TIME[2017-05-09 20:10:48 +09:00]])
<https://dxr.mozilla.org/mozilla-central/source/media/libnestegg/src/nestegg.c#3142>

[233] [CITE@en-US[mp3sniff.c - DXR]]
([TIME[2017-05-09 20:13:32 +09:00]])
<https://dxr.mozilla.org/mozilla-central/source/toolkit/components/mediasniffer/mp3sniff.c?q=%2Bfunction%3A%22mp3_sniff%28const+uint8_t+%2A%2C+long%29%22&redirect_type=single#118>

[235] [CITE@en[Speech Recognition Grammar Specification Version 1.0]]
([TIME[2004-03-15 22:28:52 +09:00]])
<https://www.w3.org/TR/speech-grammar/#S2.2.2>

[236] [CITE@en[Fold request type into destination]]
([[annevk]]著, [TIME[2017-08-28 18:15:21 +09:00]])
<https://github.com/whatwg/fetch/commit/d7052e2b6d24d04caa2cea8ef664923ecdb1e35c>

[237] [CITE@en[Define a new MIME type model, parser, and serializer]]
([[annevk]]著, [TIME[2017-12-07 22:11:12 +09:00]])
<https://github.com/whatwg/mimesniff/commit/cc81ec48288944562c4554069da1d74a71e199fb>

[238] [CITE@en[Meta: use new WHATWG boilerplate and license]]
([[domenic]]著, [TIME[2018-01-06 00:30:34 +09:00]])
<https://github.com/whatwg/mimesniff/commit/ce29cfd2632c3f4d16e078471f1418513c9272f7>

[239] [CITE@en[Meta: use new WHATWG boilerplate and license by domenic · Pull Request #54 · whatwg/mimesniff]]
([TIME[2018-01-07 13:39:46 +09:00]])
<https://github.com/whatwg/mimesniff/pull/54>

[240] [CITE[Actions required to mitigate Speculative Side-Channel Attack techniques - The Chromium Projects]]
([TIME[2018-01-09 10:37:14 +09:00]])
<https://www.chromium.org/Home/chromium-security/ssca>

[241] [CITE[Site Isolation - The Chromium Projects]]
([TIME[2018-01-09 10:37:14 +09:00]])
<http://www.chromium.org/Home/chromium-security/site-isolation>

[242] [CITE@en[How to handle undocumented font mime type · Issue #27 · whatwg/mimesniff]]
([TIME[2018-02-11 18:48:27 +09:00]])
<https://github.com/whatwg/mimesniff/issues/27>

[243] [CITE@en[Support for WOFF File Format 2.0 · Issue #28 · whatwg/mimesniff]]
([TIME[2018-02-11 18:50:59 +09:00]])
<https://github.com/whatwg/mimesniff/issues/28>

[244] [CITE@en[Update font types list and sniffing by domenic · Pull Request #57 · whatwg/mimesniff]]
([TIME[2018-02-11 18:51:50 +09:00]])
<https://github.com/whatwg/mimesniff/pull/57>

[245] [CITE@en[Editorial: tweak MIME type group definitions]]
([[domenic]]著, [TIME[2018-02-06 06:35:09 +09:00]])
<https://github.com/whatwg/mimesniff/commit/452938939d1d88e3c74f59f41f14579249130437>

[246] [CITE@en[Editorial: tweak MIME type group definitions by domenic · Pull Request #59 · whatwg/mimesniff]]
([TIME[2018-02-17 18:27:47 +09:00]])
<https://github.com/whatwg/mimesniff/pull/59>

[249] [CITE@en[Meltdown/Spectre  |  Web  |  Google Developers]]
([TIME[2018-02-08 00:05:08 +09:00]])
<https://developers.google.com/web/updates/2018/02/meltdown-spectre>

[250] [CITE@en[Invitation to attend upcoming IETF meetings · Issue #58 · whatwg/meta]]
([TIME[2018-03-20 17:39:06 +09:00]])
<https://github.com/whatwg/meta/issues/58>

[251] [CITE@en[IETF HTML5 Meeting March 2009 - W3C Wiki]]
([TIME[2018-04-21 13:28:11 +09:00]])
<https://www.w3.org/wiki/IETF_HTML5_Meeting_March_2009>

[252] [CITE@en[Review Draft Publication: July 2018]]
([[annevk]]著, [TIME[2018-07-23 22:11:07 +09:00]])
<https://github.com/whatwg/mimesniff/commit/0d2601893af87ab6ba7adce04d16750f86afed91>

[253] [CITE@en[Review Draft Publication: July 2018 by annevk · Pull Request #73 · whatwg/mimesniff]]
([TIME[2018-07-26 16:47:09 +09:00]])
<https://github.com/whatwg/mimesniff/pull/73>

[254] [CITE@en[MIME Sniffing Standard Review Draft July 2018]]
([TIME[2018-07-24 02:07:50 +09:00]])
<https://mimesniff.spec.whatwg.org/review-drafts/2018-07/>

[255] [CITE@en[Enforce strict MIME type checks for worker-imported scripts]]
([[mikewest]]著, [TIME[2018-12-19 07:18:59 +09:00]])
<https://github.com/whatwg/html/commit/d1c3679934f52450666750464effb97e14f555e0>

[256] [CITE@en[No longer render resources requested via FTP]]
([[mikewest]]著, [TIME[2018-12-13 23:59:41 +09:00]])
<https://github.com/whatwg/fetch/commit/c6b3a750f811cb4f628def0313ac317d9dcec88a>

[257] [CITE@en[Review Draft Publication: January 2019]]
([[annevk]]著, [TIME[2019-01-23 20:24:56 +09:00]])
<https://github.com/whatwg/mimesniff/commit/5aa48d4bdde1524770a44d29613e994c502e4f65>

[258] [CITE@en[Review Draft Publication: January 2019 by annevk · Pull Request #94 · whatwg/mimesniff]]
([TIME[2019-06-03 20:23:50 +09:00]])
<https://github.com/whatwg/mimesniff/pull/94>

[259] [CITE@en[MIME Sniffing Standard Review Draft January 2019]]
([TIME[2019-01-23 22:48:23 +09:00]])
<https://mimesniff.spec.whatwg.org/review-drafts/2019-01/>

[260] [CITE@en[Review Draft Publication: July 2019]]
([[annevk]]著, [TIME[2019-07-16 18:15:41 +09:00]])
<https://github.com/whatwg/mimesniff/commit/c538bec2b8324a14546671f729cece1f1740c7d1>

[261] [CITE@en[Review Draft Publication: July 2019 by annevk · Pull Request #109 · whatwg/mimesniff]]
([TIME[2020-01-12 16:27:23 +09:00]])
<https://github.com/whatwg/mimesniff/pull/109>

[262] [CITE@en[MIME Sniffing Standard Review Draft July 2019]]
([TIME[2019-07-16 18:44:01 +09:00]])
<https://mimesniff.spec.whatwg.org/review-drafts/2019-07/>