[8] [[Web]] における[DFN[[RUBYB[[[混合内容]]]@en[mixed content]]]]とは、
[[HTTPS]] の[[文書]]から参照される [[HTTP]] の[[スクリプト]]のように、
[[安全]]な[[プロトコル]]によってもたらされた文書に含まれる[[安全]]でない[[プロトコル]]由来のデータのことをいいます。

[46] かつては[[混合内容]]も普通に用いられていましたが、
[[TLS]] を用いない[[素のHTTP]]が[[安全]]ではないとの認識が広まるにつれ、
[[混合内容]]が禁止されるようになっていきました。

[47] 現在では[[画像]]や[[媒体]]を除き、[[混合内容]]は禁止されています。
[[混合内容]]の [[fetch]] は、[[ネットワークエラー]]となります。

* 仕様書

[REFS[
- [25] '''[CITE@en[Mixed Content]] ([TIME[2015-05-17 18:30:14 +09:00]] 版) <https://w3c.github.io/webappsec/specs/mixedcontent/>'''
-- [90] [CITE@en[Mixed Content]], [TIME[2020-04-28 21:05:56 +09:00]] <https://w3c.github.io/webappsec-mixed-content/#terms>
-- [95] [CITE@en[Mixed Content]], [TIME[2020-04-28 21:05:56 +09:00]] <https://w3c.github.io/webappsec-mixed-content/#categories>
-- [102] [CITE@en[Mixed Content]], [TIME[2020-04-28 21:05:56 +09:00]] <https://w3c.github.io/webappsec-mixed-content/#algorithms>
-- [163] [CITE@en[Mixed Content]], [TIME[2020-04-28 21:05:56 +09:00]] <https://w3c.github.io/webappsec-mixed-content/#security-considerations>
- [26] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-websocket>
]REFS]

* 意味

[88] あるページが [[HTTPS]] ([[HTTP]] over [[TLS]]) で保護されて配送されてきたとしても、
其の表示に際して別の[[資源]]を埋め込む時に[[素のHTTP]]
を使っていたら、
その [[Webページ]]全体は信頼できるとは言い切れなくなります。
特にそれが[[スクリプト]]の場合、
攻撃者によって
[[Webページ]]の表示全体が置き換えられる場合すらあり得ます。

[89] 
[[混合内容]]制約は、
[[TLS]]
で保護されているように見える
[[Webページ]]が、
真に保護されていることを確保するための最低限の保証と言えます。

[91] 
[[要求]]は、
[F[URL][要求URL]]
が
[F[先験的認証済URL]]
で''なく''、
[[Does settings prohibit mixed security contexts?]]
が[[真]]であるとき、
[DFN[[RUBYB[混合内容][mixed content]]]]です。
[SRC[>>90]]

[92] 
[[応答]]は、
[[unauthenticated response]]
であって、
[[Does settings prohibit mixed security contexts?]]
が[[真]]であるとき、
[DFN[[RUBYB[混合内容][mixed content]]]]です。
[SRC[>>90]]

[94] 
[[混合内容]]が、
[[混合内容]]を制限する文脈に読み込まれる時、
当該文脈は [[RFC 6797]] [RUBYB[[[混合保安文脈]]][mixed security context]]です。
[SRC[>>90]]


* 適用対象

[174] 
[[Fetch]]
に適用されます。
[[JavaScript]]
の
[CODE[fetch]]
に限らず、
[[Webページ]]からの[[ネットワーク]]アクセスほとんどすべてに適用されます。
[[WebSocket]] も適用対象に含まれます [SRC[>>26, >>25]]。

-*-*-

[96] 
[[要求]]が[F[混合内容]]で[DFN[[RUBYB[任意選択的ブロック可能][optionally-blockable]]]]であるとは、
[F[終点]]が [CODE[video]] か [CODE[audio]] であるか、
[F[initiator]] が[[空文字列]]で[F[終点]]が [CODE[image]] であるかをいいます。
[SRC[>>95]]

[97] [CODE[img]] などの[[画像]], [CODE[video]], [CODE[audio]],
[CODE[video]] や [CODE[audio]] の [CODE[source]]
などが該当します。これらは従前より[[混合内容]]が比較的よく使われてきました。
それをただちにブロックすることは[[Web互換性]]のため極めて難しいので、
当分の間の暫定的措置として混在が認められています [SRC[>>95]]。
とはいえ混在が安全でないことは間違いなく、
理想的にはブロックするべきものであるため、
将来的にブロックできるようになることが期待されています [SRC[>>95]]。
[[利用者]]の設定で[[任意選択的ブロック可能]]なものも含めてブロックすることができます
(>>168)。
(なお、
[[任意選択的ブロック可能]]に該当しても、他の条件によりブロックされる場合があります。)

[98] 
[[要求]]が[F[混合内容]]で[[任意選択的ブロック可能]]で''ない''場合、
[DFN[[RUBYB[ブロック可能][blockable]]]]です。
[SRC[>>95]]


[99] 
[[プラグイン]]からのネットワークアクセスも[[混合内容]]制約の適用対象ですが、
[[NPAPI]] [[プラグイン]]が直接ネットワークにアクセスする可能性があるように、
実際には擦り抜けられてしまうことがあります。
[[Webブラウザー]]はこれを防ぐべきで、
[[プラグイン]]の開発者も制約に從うべきとされています。
[SRC[>>95]]
[[Flash]]
を最後に外部[[プラグイン]]が廃止されることで、
この問題は解消されます。

-*-*-

[85] 
[[navigation]]、つまり [[HTTPS]] ページから[[素のHTTP]] のページへの[[リンク]]の遷移は認められています。
しかし [[navigation]] であっても [[HTTPS]] ページ内部の
[CODE[iframe]] に表示させるようなものは、認められません。

[141] 
[[HTTPS]] から[[素のHTTP]] への[[フォームの提出]]も基本的には認められています。
しかし
[[Webブラウザー]]依存でこれを制限しても構わないことになっています
(>>124)。
そのような場合古くから多くの
[[Webブラウザー]]が[[モーダルダイアログ]]を表示して[[利用者]]に確認していました。

-*-*-

[175] 
[[利用者エージェント]]は、
仕様書の[[アルゴリズム]]より更に厳しい制限を課すことが認められ
(というか[RUBYB[推奨][[[encouraged]]]]され)
ています。
[SRC[>>163]]
いくつか例示されていますが、それ以外の措置も認められるようです。

[176] そのような曖昧性を残した規定は[[相互運用性]]のため好ましくないとも思われますが、
要はすべて [[HTTPS]] で[[安全に輸送][保安輸送路]]すれば良いということでしょう。

[177] 
[CODE[Strict-Transport-Security]] ヘッダー ([[HSTS]])
があるとき、
すべてを[[ブロック可能]]とみなしたり、
[[厳密混合内容検査フラグ]]を設定するものとみなしたりして構いません。
[SRC[>>163]]

[178] 
[[利用者]]の安全のため危険性を下げるべく、
[[任意選択的ブロック可能]]な[[要求]]を修正して構いません。
例えば[[クッキー]]その他[[認証]]トークンw除去したり、
自動的に [[URL scheme]] を[[格上げ][UIR]]してみたり、
などの措置を取り得ます。
[SRC[>>163]]


[179] 
[[入れ子閲覧文脈]]内の[[任意選択的ブロック可能]]なものを[[ブロック可能]]とみなして構いません。
そうすることで[[混合内容][Mixed Content]]が含まれてしまうおそれを排除して埋め込みできます。
[SRC[>>163]]



* プロトコル

[FIG(short list)[ [100] [[混合内容][Mixed Content]]制約の制御
- [CODE[block-all-mixed-content]]
- [[UIR]]
]FIG]

[167] 
[[Mixed Content]] は [[Webブラウザー]]が実装する制約で、
[[HTTPS]] 頁に[[素のHTTP]]が埋め込まれるものをエラーとするものです。
ところが従来[[素のHTTP]]で提供されてきた
[[Web頁]]を
[[HTTPS]]
に移行したい時、
ページ内にあるすべての [[URL]]
を [CODE[http:]]
から
[CODE[https:]]
に書き換えないといけないとすると、大規模な
[[Webサーバー]]では困難な場合があります。
そこで
[[UIR]]
を使うと、
[[Mixed Content]] でエラーとなる以前に暗黙裡に
[CODE[http:]]
から
[CODE[https:]]
への読み替えがなされます。

* 処理

[103] 
[[環境設定群オブジェクト]][VAR[設定群]]について
[DFN[Does [VAR[settings]] prohibit mixed security contexts?]]
は、
[[真]] (Prohibits Mixed Security Contexts)
か[[偽]] (Does Not Prohibit Mixed Security Contexts)
を返し、
次のようにします。
[SRC[>>102]]

[FIG(steps)[
= [104] 
[VAR[設定群]]の
[F[HTTPS状態]]
が [CODE[none]]
で''ない''場合、
== [105] 
[[真]]を返し、
ここで停止します。
= [106] [VAR[文書]]を、[VAR[設定群]]の[F[有責文書]]に設定します。
= [108] [VAR[文書]]が [CODE[null]] で'''ない'''場合、
== [107] 
[VAR[文書]]の[F[埋め込んでいる文書]]が [CODE[null]] で''ない''間、
[[繰り返し]]、
=== [109] 
[VAR[文書]]を、
[VAR[文書]]の[F[埋め込んでいる文書]]に設定します。
=== [110] 
[VAR[埋め込み器設定群]]を、
[VAR[文書]]の[F[大域オブジェクト]]の[F[関連設定群オブジェクト]]に設定します。
=== [111] 
[VAR[埋め込み器設定群]]の
[F[HTTPS状態]]が
[CODE[none]]
で''ない''場合、
==== [112] 
[[真]]を返します。
= [113] [[偽]]を返します。
]FIG]

[114] おおまかにいえば、親[[フレーム]]に [CODE[https:]]
のものがあれば[[真]]を返します。

[166] 
[[要求]] (>>116) や[[応答]] (>>142) に対するアルゴリズムの他、
[[アドレスバー]]表示でも使われます。

-*-*-

[116] 
[[要求]][VAR[要求]]について
[DFN[Should fetching [VAR[request]] be blocked as mixed content?]]
は、
[[真]] (blocked)
か
[[偽]] (allowed)
を返し、
次のようにします。
[SRC[>>102]]

[FIG(steps)[
= [117] 
[VAR[要求]]の[F[クライアント][要求クライアント]]について
[[Does [VAR[settings]] prohibit mixed security contexts?]]
が[[偽]]の場合、
== [118] [[偽]]を返し、ここで停止します。
= [119] 
[VAR[要求]]の[F[URL][要求URL]]の[F[先験的認証済]]が[[真]]の場合、
== [120] [[偽]]を返し、ここで停止します。
= [121] 
[[混合内容][Mixed Content]]を認めるよう[[利用者エージェントが設定][Webブラウザー利用者の設定]]
(>>170) 
されている場合、
== [169] [[偽]]を返し、ここで停止します。
= [122] 
[VAR[要求]]の[F[終点]]が
[CODE[document]]
で、
[VAR[要求]]の[F[対象閲覧文脈]]の[F[親閲覧文脈]]が 
[CODE[null]]
の場合、
== [124] 
[VAR[要求]]が[[フォーム提出]]であって[[利用者エージェント]]がこの種の[[混合内容][Mixed Content]]を検査する場合を'''除き'''
[SRC[>>102, >>163]]、
=== [123] [[偽]]を返し、ここで停止します。
= [125] 
[VAR[要求]]の[F[クライアント][要求クライアント]]の
[F[CSPリスト]]中の各[VAR[方針]]について、順に、
== [126] 
[VAR[方針]]の[F[指令集合]]に
[CODE[block-all-mixed-content]]
[[指令]]が含まれる場合、
=== [127] 
[VAR[違反]]を、
[VAR[要求]]の[F[クライアント][要求クライアント]]の[F[大域オブジェクト]]と
[CODE[block-all-mixed-content]]
について
[[create-violation-for-global]]
した結果に設定します。
=== [128] 
[VAR[違反]]の[VAR[資源]]を、
[VAR[要求]]の
[F[URL][要求URL]]
に設定します。
=== [129] 
[VAR[違反]]について
[[report-violation]]
します。
= [115] 
[[任意選択的ブロック可能混合内容]]を認め''ない''よう[[利用者エージェントが設定][Webブラウザー利用者の設定]]
(>>168)
されている場合、
== [130] 
[[真]]を返し、
ここで停止します。
= [131] 
[VAR[要求]]の[F[クライアント][要求クライアント]]の[F[厳密混合内容検査フラグ]]が[[真]]の場合、
== [132]  
[[真]]を返し、
ここで停止します。
= [133] 
[VAR[要求]]の[F[モード][要求モード]]が
[[CORS]]
の場合、
== [134] 
[[真]]を返し、
ここで停止します。
= [135] 
[VAR[要求]]の[F[終点]]が
[CODE[image]]
で、
[VAR[要求]]の [F[initiator]] が [CODE[imageset]]
で''ない''場合、
== [136] 
[[偽]]を返し、
ここで停止します。
= [137] [VAR[要求]]の[F[終点]]が
[CODE[video]] か [CODE[audio]]
の場合、
== [138] 
[[偽]]を返し、
ここで停止します。
= [139] 
[[真]]を返します。
]FIG]

[140] [[fetch]] から呼び出されます。

-*-*-

[142] 
[[要求]][VAR[要求]]、
[[応答]][VAR[応答]]について
[DFN[Should [VAR[response]] to [VAR[request]] be blocked as mixed content?]]
は、
[[真]] (blocked)
か
[[偽]] (allowed)
を返し、
次のようにします。
[SRC[>>102]]

[FIG(steps)[
= [143]  
[VAR[要求]]の[F[クライアント][要求クライアント]]について
[[Does [VAR[settings]] prohibit mixed security contexts?]]
が[[偽]]の場合、
== [144] [[偽]]を返し、ここで停止します。
= [145]  
[[混合内容][Mixed Content]]を認めるよう[[利用者エージェントが設定][Webブラウザー利用者の設定]]
(>>170)
されている場合、
== [146] [[偽]]を返し、ここで停止します。
= [147]  
[VAR[要求]]の[F[終点]]が
[CODE[document]]
で、
[VAR[要求]]の[F[対象閲覧文脈]]の[F[親閲覧文脈]]が 
[CODE[null]]
の場合、
== [148]  
[VAR[要求]]が[[フォーム提出]]であって[[利用者エージェント]]がこの種の[[混合内容][Mixed Content]]を検査する場合を'''除き'''
[SRC[>>102, >>163]]、
=== [149] [[偽]]を返し、ここで停止します。
= [150] 
[VAR[応答]]の
[F[HTTPS状態]]が
[CODE[modern]]
の場合、
== [151] 
[[偽]]を返し、
ここで停止します。
= [152] 
[[任意選択的ブロック可能混合内容]]を認め''ない''よう[[利用者エージェントが設定][Webブラウザー利用者の設定]]
(>>168)
されている場合、
== [153] 
[[真]]を返し、
ここで停止します。
= [154]  
[VAR[要求]]の[F[クライアント][要求クライアント]]の[F[厳密混合内容検査フラグ]]が[[真]]の場合、
== [155]  
[[真]]を返し、
ここで停止します。
= [156] 
[VAR[要求]]の[F[終点]]が
[CODE[image]]
で、
[VAR[要求]]の [F[initiator]] が [CODE[imageset]]
で''ない''場合、
== [157]  
[[偽]]を返し、
ここで停止します。
= [158] [VAR[要求]]の[F[終点]]が
[CODE[video]] か [CODE[audio]]
の場合、
== [159]  
[[偽]]を返し、
ここで停止します。
= [160] 
[[真]]を返します。
]FIG]

[161] [[fetch]] から呼び出されます。

[162] 
この処理は[VAR[要求]]に対する処理と似ています。
[VAR[要求]]に対する処理はネットワークに送信する前に実行し、
それを通過したもののみがこちらの[VAR[応答]]に対する処理も実行されます。
[VAR[応答]]に対する処理は、
[[リダイレクト]]の結果や[[サービスワーカー]]が動作した場合も考慮して、
一部重複して検査が実行されています。

* 利用者インターフェイス

[101] 
表示中の
[[Web頁]]が[[混合内容][Mixed Content]]を含むかどうかは、
通例[[アドレスバー]]に表示されます。
[SEE[ [[アドレスバー]] ]]

[165] 
他に[[開発者コンソール]]に詳しくエラーが表示されることがあります。
[[文書]]の[F[厳密混合内容検査フラグ]]が[[真]]で一般の[[利用者]]に[[混合内容][Mixed Content]]の表示がない場合
[SEE[ [[アドレスバー]] ]]
であっても、[[開発者コンソール]]には表示して構いません [SRC[>>163]]。

[HISTORY[
[164] 
古くは[[混合内容][Mixed Content]]を表示するかどうかいちいち[[モーダルダイアログ]]を表示する
[[Webブラウザー]]もありました。
]HISTORY]

[173] [[Webブラウザー利用者の設定]]による一部挙動の変更も認められています。


[168] 
[[利用者エージェント]]は、
すべての[[混合内容][Mixed Content]]を[[ブロック可能]]とする
([[任意選択的ブロック可能]]なものもブロックする)
選択肢を[[利用者]]に提供して[MAY[構いません]]。
その場合[[利用者]]はこれを利用することが[RUBYB[強く推奨][strongly recommended]]されます。
[SRC[>>163]]

[170] 
[[利用者エージェント]]は、
特定の
[[Webページ]]について、
[[ブロック可能]]なものをブロックする決定を覆す手段を[[利用者]]に提供して[MAY[構いません]]。
[SRC[>>163]]

;; [171] 
[[仕様書]]は現実的にそうした機能を提供しないことはできないとし、
危険なので十分注意喚起するよう求めていました [SRC[>>163]]。
実際古くからそうした機能を
[[Webブラウザー]]は備えていました。
其後 [[HTTPS]]
移行が進んでおり、現在では必要もほとんどなくなっているとみられます。

[172] 
[[利用者エージェント]]は、こうした機能について、
[[AT]] [[利用者]]のため[[アクセシビリティーAPI]]
を通じても提供しなければ[MUST[なりません]]。
[SRC[>>163]]



* 誤訳「コンテンツ」



[63] [[単数形]]の「Mixed Content」
を[DFN[混合コンテンツ]]、
[DFN[混在コンテンツ]]と訳す人もいますが、
明確な[[誤訳]]です。


[FIG(quote)[
[FIGCAPTION[
[54] [CITE@ja[はてなブログへの接続をすべてHTTPSにできる機能の実装予定と、利用を検討するユーザー様に準備いただきたいこと - はてなブログ開発ブログ]]
([TIME[2017-09-25 20:23:30 +09:00]])
<http://staff.hatenablog.com/entry/2017/09/25/143000>
]FIGCAPTION]

> 混在コンテンツ(Mixed Content)

]FIG]


[55] なぜ[[英語]]で[[単数形]]なのに[[日本語]]で[[複数形]]に訳すのか、理解に苦しむ。

[68] 
[CITE@ja[はてなブックマーク・ネイティブ広告 - はてなのコンテンツマーケティング支援総合サービス]] ([TIME[2019-06-06 13:45:44 +09:00]]) <http://www.hatena.ne.jp/contentmarketing/nativeads>
では
「はてなコンテンツマーケティング」が
「Hatena Content Marketing」
とされています。[[株式会社はてな]]では content の「t」を「ツ」
と[[音訳]]していると思われます。

[69] 他社ではこうした事例は多くないので (なくはない)、
業界独自の慣習でもなくこの会社の人がそうしているだけ?

- [72] [CITE@ja[混合コンテンツとは | [[Web]] | Google Developers]] ([TIME[2019-10-06 18:40:32 +09:00]]) <https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content>
- [74] [CITE@ja[混合コンテンツの防止 | [[Web]] | Google Developers]] ([TIME[2019-10-06 18:42:37 +09:00]]) <https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content>

[73] 
[[英語]]原文では「content」と単数なのがことごとく「コンテンツ」
と複数形で誤訳されています。

[75] 
[[Google]]
は
[CITE@ja[コンテンツ セキュリティ ポリシー | [[Web]] | Google Developers]] ([TIME[2019-10-06 18:44:17 +09:00]]) <https://developers.google.com/web/fundamentals/security/csp>
で
[[CSP]] の C も「コンテンツ」
と訳しています。
「ツ」は
「t」の音訳なのかもしれません。

[71] [CITE@ja[Google、Chromeで混合コンテンツを完全にブロックする計画 | [[スラド]] IT]] ([TIME[2019-10-06 18:38:18 +09:00]]) <https://it.srad.jp/story/19/10/05/2112223/>

>>72 を引用。

[76] 
「コンテント」と「コンテンツ」を正しく訳し分けしないと、
技術者は
[CODE[block-all-mixed-content]]
の正しい綴りを覚えるのに苦労することになります。

* 関連

[10] [[SGML]] や [[XML]] の[[内容モデル]]における[[混合内容]]とは関係ありません。
[[混合内容]]の語は長年 [[Webブラウザー]]で使われるため混乱は少ないと説明されています
[SRC[>>90]]。

[84] 
[[保安文脈]]は [[HTTPS]] とそれ以外を分離した上で更に [[HTTPS]]
側だけに機能を提供する、更に強い制約となっています。

* 歴史

[86] 
当初 [[HTTPS]] と[[素のHTTP]]
の混合はまったく制約なく認められていました。
[[Web]] 上では普通に行われていました。

[87] 
しかし
[[IE4]]
など [[HTTPS]]
からの[[素のHTTP]]
の利用の一部を制限することがある
[[Webブラウザー]]もありました。



[9] 
>A [[Web page]] is called [DFN[[[mixed content]]]] if the [[top-level resource]] was retrieved through a [[strongly TLS protected HTTP transaction]], but some dependent [[resources]] were [[retrieved]] through a [[weakly protected]] or [[unprotected HTTP transaction]].

;; [CITE[Web Security Context: User Interface Guidelines]] ([TIME[2010-08-04 20:09:50 +09:00]] 版) <http://www.w3.org/TR/2010/REC-wsc-ui-20100812/#def-mixed-content>

;; [93] この旧定義は [CITE[Mixed Content]]
により更新されました [SRC[>>90]]。

[6] [CITE[Web Security Context: User Interface Guidelines]]
( ([TIME[2010-08-04 11:09:50 +09:00]] 版))
<http://www.w3.org/TR/wsc-ui/#def-mixed-content>

[7] [CITE@en[RFC 6797 - HTTP Strict Transport Security (HSTS)]]
( ([TIME[2014-06-02 05:16:10 +09:00]] 版))
<http://tools.ietf.org/html/rfc6797#section-2.3.1.3>

[1] [CITE@en[Mixed Content]]
( ([TIME[2014-05-30 17:48:27 +09:00]] 版))
<http://projects.mikewest.org/webappsec/specs/mixedcontent/>

[2] [CITE[webappsec/specs/mixedcontent at master · w3c/webappsec]]
( ([TIME[2014-05-31 02:44:56 +09:00]] 版))
<https://github.com/w3c/webappsec/tree/master/specs/mixedcontent>

[3] [CITE@en[Mixed Content]]
( ([TIME[2014-05-30 17:53:42 +09:00]] 版))
<https://w3c.github.io/webappsec/specs/mixedcontent/>

[4] [CITE[Add Mixed Content hook placeholders. Broaden placeholder CSP hook. · f04393a · whatwg/fetch]]
( ([TIME[2014-06-03 03:25:57 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/f04393aa9815dd6dce350d5d058f2bac9c4d606c>

[5] [CITE@en[Bug 22262 – Mixed content / CSP]]
( ([TIME[2014-06-03 03:27:39 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22262>


[11] [CITE@en[RFC 6797 - HTTP Strict Transport Security (HSTS)]]
( ([TIME[2014-06-02 05:16:10 +09:00]] 版))
<http://tools.ietf.org/html/rfc6797#section-12.4>

[12] [CITE[Clarify MIX and CSP hooks a bit · 682f68d · whatwg/fetch]]
( ([TIME[2014-06-16 03:02:08 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/682f68d5f0cce7f9637a8f6d9450b514ed276f9b>

[13] [CITE[Put MIX/CSP hooks in switch. Put second MIX check before tainting. · 567fe8a · whatwg/fetch]]
( ([TIME[2014-06-16 03:05:48 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/567fe8ad5f1804efdefa7aa273f2a366b223c70e>

[14] [CITE@en[Mixed Content]]
( ([TIME[2014-07-17 21:32:22 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-mixed-content-20140722/>

[15] [CITE@en[Mixed Content]]
( ([TIME[2014-09-15 23:45:04 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-mixed-content-20140916/>

[16] [CITE@en[Mixed Content]]
( ([TIME[2014-11-13 02:58:19 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-mixed-content-20141113/>

[17] [CITE@en[MIX: Walk the ancestor tree for powerful features. · 8d8d201 · w3c/webappsec]]
( ([TIME[2014-11-21 21:02:00 +09:00]] 版))
<https://github.com/w3c/webappsec/commit/8d8d201a571896267b229e9be0bd5cab222d67a2>

[18] [CITE@en[Fix the order of CSP, HSTS, Mixed Content, and Referrer https://www.w3.o... · b8c2c49 · whatwg/fetch]]
([TIME[2015-01-28 18:20:44 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/b8c2c4964c233cd3616042c04e2c14e0ff25485d>

[19] [CITE@en[Mixed Content]]
( ([TIME[2015-03-13 06:25:45 +09:00]] 版))
<http://www.w3.org/TR/2015/CR-mixed-content-20150317/>

[20] [CITE[Part2 - browsersec - Browser Security Handbook, part 2 - Browser Security Handbook - Google Project Hosting]]
([TIME[2015-03-31 16:49:53 +09:00]] 版)
<https://code.google.com/p/browsersec/wiki/Part2#Protocol-level_encryption_facilities>

[21] [CITE@en[Re: Fetch, MSE, and MIX]]
([[Matthew Wolenetz]] 著, [TIME[2015-04-11 07:24:15 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webappsec/2015Apr/0093.html>

[22] [CITE@en[Re: ''''''[''''''MIX'''''']'''''' Modifications to script APIs]]
([[Anne van Kesteren]] 著, [TIME[2014-10-31 16:55:54 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webappsec/2014Oct/0228.html>

[23] [CITE@en[Bug 28577 – ''''''[''''''XMLHttpRequest'''''']'''''' Throwing SecurityError on open() call for some kind of simple errors]]
([TIME[2015-05-06 16:40:03 +09:00]] 版)
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28577>

[FIG(quote)[
[FIGCAPTION[
[24] [CITE@en-GB-x-hixie[HTML Standard]]
([TIME[2015-05-06 10:42:35 +09:00]] 版)
<https://html.spec.whatwg.org/#dom-websocket>
]FIGCAPTION]

> If secure is false but the origin specified by the entry settings object has a scheme component that is itself a secure protocol, e.g. HTTPS, then throw a SecurityError exception and abort these steps.

]FIG]

[27] [CITE@en[MIX: Clarify mixed content "resources" vs "requests". · w3c/webappsec@8732a84]]
([TIME[2015-06-23 12:29:02 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/8732a8402ba535dc7ab05423fec251f8ceb5c8bd>

[28] [CITE@en[MIX: Explicitly update WSC-UI's 'mixed content' definition (h/t @equa… · w3c/webappsec@d9d8246]]
([TIME[2015-06-23 12:29:20 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/d9d8246bf985bcfe78d02dfb6d0c1be6ccb3b56a>

[29] [CITE@en[MIX: Cite a source for the IE4 note. · w3c/webappsec@9b1690c]]
([TIME[2015-06-23 12:29:42 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/9b1690c0432e0320fa861c89ced452bbaf45a5ed>

[30] [CITE@ja-JP[PRB: Security Warning Message Occurs When You Browse to a Page That Contains an IFRAME Through SSL]]
([TIME[2015-06-23 12:30:12 +09:00]] 版)
<https://support2.microsoft.com/default.aspx?scid=kb;EN-US;Q261188>

[31] [CITE@en[Eric Lawrence on Twitter: "@mikewest IE6-IE8 used a modal dialog box. http://t.co/fvK7RiZ9Pi implies that IE4/IE5 had the same. Sadly, I don't have any Win9x VMs."]]
([TIME[2015-06-23 12:30:23 +09:00]] 版)
<https://twitter.com/ericlaw/status/469813922908758016>

[32] [CITE@en[MIX: Clarify "mixed content" vs XML's term. · w3c/webappsec@528162c]]
([TIME[2015-06-23 12:32:01 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/528162c3014ddd19cc6e04570fe19e57292ca0d1>

[FIG(quote)[
[FIGCAPTION[
[33] [CITE@en[RFC 6797 - HTTP Strict Transport Security (HSTS)]]
([TIME[2015-05-03 13:27:16 +09:00]] 版)
<http://tools.ietf.org/html/rfc6797#section-12.4>
]FIGCAPTION]

> "Mixed security context" loads happen when a web application
>    resource, fetched by the UA over a secure transport, subsequently
>    causes the fetching of one or more other resources without using
>    secure transport.  This is also generally referred to as "mixed
>    content" loads (see Section 5.3 ("Mixed Content") in
>    '''['''W3C.REC-wsc-ui-20100812''']''') but should not be confused with the same
>    "mixed content" term that is also used in the context of markup
>    languages such as XML and HTML.
>    NOTE:  In order to provide behavioral uniformity across UA
>           implementations, the notion of mixed security context will
>           require further standardization work, e.g., to define the
>           term(s) more clearly and to define specific behaviors with
>           respect to it.

]FIG]


[FIG(quote)[
[FIGCAPTION[
[34] [CITE@en[Re: CSP2: Drop 'unsafe-redirect'.]]
([[Brian Smith]] 著, [TIME[2015-07-02 03:24:10 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webappsec/2015Jul/0019.html>
]FIGCAPTION]

> When Firefox implemented mixed content blocking, Mozilla treated
> Mozilla-owned sites specially: We assumed that our coworkers would make the
> necessary changes before we shipped, after we helped them understand what
> was necessary, and so we didn't consider breaking any Mozilla site a risk
> for shipping. That strategy worked very well for us (IIRC).

]FIG]


[35] [CITE[Intent to Ship: Strict mixed content checking. - Google Groups]]
([TIME[2015-07-07 11:53:13 +09:00]] 版)
<https://groups.google.com/a/chromium.org/d/msg/blink-dev/MafYMJ3zQw0/DkZdADnS3hMJ>

[36] [CITE@en[MIX: First stab at SW integration. · w3c/webappsec@e577d4d]]
([TIME[2015-07-21 11:22:23 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/e577d4d5746bd33248a7dd4dbe0db515c16f20fb>

[37] [CITE@en[MIX: Dropping the irrelevant CORS mode check from passthrough requests. · w3c/webappsec@72c2dba]]
([TIME[2015-09-07 12:50:28 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/72c2dba9b871a577c2be24101d57f71b63240974>

[38] [CITE@en[MIX: Align 'should block response?' with Fetch. · w3c/webappsec@bbe52ec]]
([TIME[2015-09-07 12:52:06 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/bbe52eca3e5c3b1c726b03c0363bf87bf4c66972>

[39] [CITE@en[MIX: Clarify blocking algorithm for passthrough requests. · w3c/webappsec@1d683bb]]
([TIME[2015-09-07 12:53:22 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/1d683bb8e9e4c60b4e51f40299c5e634eb024170>

[40] [CITE@en[MIX: Target browsing context. · w3c/webappsec@05c7c4c]]
([TIME[2015-09-09 15:43:48 +09:00]] 版)
<https://github.com/w3c/webappsec/commit/05c7c4caf52596baab0acb85083be3a1dd710ae2>

[41] [CITE@en[Mixed Content]]
([TIME[2015-10-01 19:55:17 +09:00]] 版)
<https://w3c.github.io/webappsec-mixed-content/>

[42] [CITE@en[w3c/webappsec-mixed-content]]
([TIME[2015-10-06 23:29:11 +09:00]] 版)
<https://github.com/w3c/webappsec-mixed-content>

[43] [CITE@en[Mixed Content]]
( ([TIME[2015-10-07 05:30:46 +09:00]] 版))
<http://www.w3.org/TR/2015/CR-mixed-content-20151008/>

[44] [CITE@en[Clean up language. · w3c/webappsec-mixed-content@bb27f07]]
([TIME[2015-10-23 11:39:12 +09:00]] 版)
<https://github.com/w3c/webappsec-mixed-content/commit/bb27f07b05e5e385ca4a767f186870d3831cd338>

[45] [CITE@en[Update WebSocket to use Fetch's WebSocket alterations · whatwg/html@3dadbca]]
([TIME[2016-03-28 23:40:07 +09:00]] 版)
<https://github.com/whatwg/html/commit/3dadbcad063a10b586ef52dd4b427aa339048ee7>

[48] [CITE@en[''''''[''''''MIX'''''']'''''' Carveout for `127.0.0.1`?]]
([[Mike West]] 著, [TIME[2016-04-29 16:43:49 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webappsec/2016Apr/0044.html>

[FIG(quote)[
[FIGCAPTION[
[49] [CITE@ja[Internet Explorer 7 における HTTPS セキュリティの強化点]]
( ([TIME[2016-05-10 21:06:38 +09:00]]))
<https://msdn.microsoft.com/ja-jp/library/bb250503>
]FIGCAPTION]

> 現象 : HTTPS コンテンツと HTTP コンテンツが混在するページを表示すると、Internet Explorer 6 以前で表示されていたモーダル ダイアログ ボックスではなく、情報バーが表示される。
> 回避策 : HTTPS ページに、HTTP プロトコルによりアドレス指定されるリソースへの参照が埋め込まれていないことを確認します。

]FIG]


[50] [CITE@en[Use 'Is URL trustworthy?' rather than whitelisting 'https' and 'wss'.]]
([[mikewest]]著, [TIME[2016-07-20 18:00:11 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/349501cdaa4b4dc1e2a8aacb216ced58fd316165>

[51] [CITE@en[CfC: Republish "Mixed Content" as CR; deadline July 27th.]]
([[Mike West]]著, [TIME[2016-07-20 18:34:33 +09:00]])
<https://lists.w3.org/Archives/Public/public-webappsec/2016Jul/0033.html>

[52] [CITE@en[Mixed Content]]
([TIME[2016-08-02 04:10:29 +09:00]])
<https://www.w3.org/TR/2016/CR-mixed-content-20160802/>

[53] [CITE@en[Call for Exclusions: Mixed Content]]
([[Xueyuan Jia]]著, [TIME[2016-08-02 22:56:14 +09:00]])
<https://lists.w3.org/Archives/Public/public-webappsec/2016Aug/0000.html>


[56] [CITE@en[Remove outdated note regarding passthrough requests.]]
([[mikewest]]著, [TIME[2017-10-20 16:06:05 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/025b6c392fdf2bb367526cd8e6130a424b4c67de>

[57] [CITE@en[Remove service worker mixed content exceptions · Issue #12 · w3c/webappsec-mixed-content]]
([TIME[2017-10-21 16:24:33 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/issues/12>

[58] [CITE@en[Cleaning up 'optionally-blockable'.]]
([[mikewest]]著, [TIME[2017-10-20 16:45:38 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/2ff806843a8e634d7d47484db185b995d2d6a95c>

[59] [CITE@en[Normative definition of optionally-blockable contradicts following note · Issue #8 · w3c/webappsec-mixed-content]]
([TIME[2017-10-21 16:26:35 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/issues/8>

[60] [CITE@en[Proposal for a MIX Level 2 roadmap.]]
([[Mike West]]著, [TIME[2017-10-27 16:07:15 +09:00]])
<https://lists.w3.org/Archives/Public/public-webappsec/2017Oct/0013.html>

[61] [CITE@en[webappsec-mixed-content/proposed-level-2-roadmap.md at master · mikewest/webappsec-mixed-content]]
([TIME[2017-10-28 22:37:35 +09:00]])
<https://github.com/mikewest/webappsec-mixed-content/blob/master/proposed-level-2-roadmap.md>

[62] [CITE@en[Mixed Content Level 2]]
([[John Wilander]]著, [TIME[2018-02-09 04:33:46 +09:00]])
<https://lists.w3.org/Archives/Public/public-webappsec/2018Feb/0001.html>

[64] [CITE@en[CfC to transition MIX to PR.]]
([[Mike West]]著, [TIME[2018-08-31 16:20:24 +09:00]])
<https://lists.w3.org/Archives/Public/public-webappsec/2018Aug/0027.html>

[65] [CITE@en[Move "Mixed Content" to PR. · Issue #15 · w3c/webappsec-mixed-content]]
([TIME[2018-09-26 18:54:39 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/issues/15>

[66] [CITE@en[Merge pull request #16 from w3c/admin-stuff]]
([[wseltzer]]著, [TIME[2018-10-02 01:31:06 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/dce78c1ffb302c27170de59aa5bf359182537a3f>

[67] [CITE@en[Admin stuff by plehegar · Pull Request #16 · w3c/webappsec-mixed-content]]
([TIME[2018-10-22 01:17:41 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/pull/16>

[70] [CITE@en[Chromium Blog: No More Mixed Messages About HTTPS]]
([TIME[2019-10-04 01:30:36 +09:00]])
<https://blog.chromium.org/2019/10/no-more-mixed-messages-about-https.html>

[77] [CITE@en[Add MIX level 2 skeleton]]
([[estark37]]著, [TIME[2019-07-18 13:56:04 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/4b68136d948df44e6d112cac2906d574b7035294>

[78] [CITE@en[Add MIX level 2 skeleton by estark37 · Pull Request #21 · w3c/webappsec-mixed-content]]
([TIME[2020-01-12 16:30:04 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/pull/21>

[79] [CITE@en[Add html output]]
([[estark37]]著, [TIME[2019-07-18 13:58:52 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/d08a1927257b14169b91227c02774d5b1c27c96c>

[80] [CITE@en[Fill out Level 2 spec (#22)]]
([[estark37]]著, [TIME[2019-08-29 13:40:03 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/3d3335503f68736890ea89b9bbdc3ac71533fd01>

[81] [CITE@en[Fill in level 2 security + privacy considerations]]
([[estark37]]著, [TIME[2019-09-07 06:50:24 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/5e27950001ea7231563fb40e20c6f28305017d5e>

[82] [CITE@en[Add level 2 security+privacy questionnaire]]
([[estark37]]著, [TIME[2019-09-07 07:07:48 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/123c78c9efcac2681ebf114353c50ed22b712c9d>

[83] [CITE@en[Update and expand Introduction]]
([[estark37]]著, [TIME[2019-09-07 07:49:09 +09:00]])
<https://github.com/w3c/webappsec-mixed-content/commit/8ce96e12c70d6efa745b3612292bfc79f997476c>

[180] [CITE@en[Add FPWD document for MIX2]]
([[carlosjoan91]], [TIME[2019-12-04 06:26:54 +09:00]], [TIME[2021-03-17T08:18:14.000Z]])
<https://github.com/w3c/webappsec-mixed-content/commit/3051e22deb3c5ba4cd5f2c564e75ab21530325cf>

[181] [CITE@en[Add carlosil as editor]]
([[carlosjoan91]], [TIME[2019-12-04 06:37:22 +09:00]], [TIME[2021-03-17T08:18:30.000Z]])
<https://github.com/w3c/webappsec-mixed-content/commit/0235c9196e8a83c25bd6adbd2ec36cd25e0abd82>

[182] [CITE@en[Add FPWD document for MIX2 by carlosjoan91 · Pull Request #24 · w3c/webappsec-mixed-content]]
([TIME[2021-03-17T08:18:42.000Z]])
<https://github.com/w3c/webappsec-mixed-content/pull/24>

[183] [CITE@en[Mixed Content Level 2]], [TIME[2021-03-12T19:55:15.000Z]], [TIME[2021-03-17T08:19:06.614Z]] <https://w3c.github.io/webappsec-mixed-content/level2.html>

[184] [CITE@en[replace original level2.html file]]
([[carlosjoan91]], [TIME[2019-12-05 08:43:45 +09:00]], [TIME[2021-03-17T08:20:36.000Z]])
<https://github.com/w3c/webappsec-mixed-content/commit/e85f5805718759b48d2e9603124c1a8ffa44e390>