[18] [DFN[[RUBYB[[[ダウンロード]]]@en[download]]]]は、
[[クライアント]]が[[サーバー]]から受信する操作をいいます。
多くの場合、[[クライアント]]側の[[ファイルシステム]]等の[[データベース]]に保存する操作までを含めて[[ダウンロード]]といいます。

;; [19] 受信したデータをその場で表示したり、[[ストリーミング]]再生したりする操作も[[ネットワーク]]からのデータ受信のみに着目すれば[[ダウンロード]]ですが、
[[利用者]]が意図的に[[ファイル]]として保存しないため、
[[利用者]]の視点では[[ダウンロード]]ではありません。

* 仕様書

[REFS[
- [28] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#attr-hyperlink-download>
- [40] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-09 09:15:24 +09:00]] 版) <https://html.spec.whatwg.org/#as-a-download>
]REFS]

* プロトコル

[20] [[HTTP]] や [[FTP]] が[[ファイル]]転送に使われます。

[21] 次のような[[プロトコル要素]]や[[アルゴリズム]]があります。

[FIG(middle list)[
- [CODE(DOMa)@en[[[download]]]] [[属性]] ([[HTML]])
- [[ハイパーリンクのダウンロード]]
- [CODE(HTTP)@en[[[Content-Disposition:]] [[attachment]]]]
- [[証明書ダウンロード]]
- [[navigate]]
]FIG]

* 保存

[13] 多くの [[Webブラウザー]]は、 [[navigate]] 時の[[ダウンロード]]の他に、
表示中の[[文書]]の保存や、[[画像]]、[[媒体]]等の保存の機能を提供しています。

[14] [[文書]]の保存は、元の [[HTML]] の保存だけでなく、表示中の[[文書]]の直列化や、
表示中の[[文書]]とそれに埋め込まれている[[画像]]や [[CSS]] 等の一式の保存、
[[平文]]化して保存といった機能が提供されていることがあります。

[15] 「Web ページ、完全」で保存すると、 [[Chrome]] と [[Firefox]]
の場合は[[拡張子]]以外のファイル名 +
[CODE[_files]]、 [[IE]] の場合は拡張子以外のファイル名 + [CODE[.files]]
という名前の[[フォルダー]]が作られ、その中に[[画像]]等のファイルが保存されます。

;; [16] [[Windows]] の[[エクスプローラー]]は本体ファイルを削除するとこの[[フォルダー]]も同時に削除します。

[17] [[IE]] は [[MHT]] 形式での保存にも対応しています。この形式では[[画像]]等もまとめて1つのファイルになります。

* ダウンロード

[39] [[fetch]] の結果の[VAR[応答]]を[DFN[[RUBYB[[[ダウンロード]]として]@en[as a download]]]]処理するとは、
[VAR[起源]]と[VAR[提案ファイル名]]や[VAR[イベント]]について、
次のようにする[SHOULD[べきです]] [SRC[>>40]]。
[FIG(steps)[
= [41] [VAR[応答]]が失敗なら、
== [42] [[利用者]]に問題を報告します。
= [43] それ以外なら、
== [44] [[利用者]]に対して、[VAR[応答]]を保存する手段を提供します。
]FIG]

[45] 一般的な[[Webブラウザー]]は、 [[fetch]] 開始直後、または[[応答ヘッダー]]受信時点で、
[[利用者]]に[[ファイル名]]を尋ねる[[ダイアログ]]を表示します。
あるいは実装と設定によっては、[[ダイアログ]]なしで[[ダウンロード]]用の[[ディレクトリー]]に自動的に保存します。

[46] [[利用者エージェント]]は、[[ファイル名]]が必要な場合、
次のように決定する[SHOULD[べきです]]。
この手順は信頼できないサイトからの[[ダウンロード]]の危険性を緩和しようとするものですから、
[[利用者エージェント]]はこれに従うことが[RUBYB[強く推奨]@en[strongly urged]]されています。
[SRC[>>40]]

[FIG(steps)[
= [47] [VAR[ファイル名]]を、 [[null]] に設定します。
= [68] [VAR[CD]] を、[VAR[応答]]の[F[ヘッダーリスト]]に [CODE(HTTP)@en[Content-Disposition]]
[[ヘッダー]]に設定します。
= [69] [VAR[CD]] が [[null]] でなければ、
== [67] [VAR[配置型]]を [VAR[CD]] の[F[配置型]]に設定します。
== [60] [VAR[HTTPファイル名]]を、 [VAR[CD]] の [CODE(MIME)@en[filename]] の値に設定します。
= [70] それ以外なら、
== [71] [VAR[配置型]]を、 [[null]] に設定します。
== [72] [VAR[HTTPファイル名]]を、 [[null]] に設定します。
= [48] [VAR[配置型]]が [CODE(MIME)@en[attachment]] で、
[VAR[HTTPファイル名]]が [[null]] でなければ、
== [49] [VAR[ファイル名]]を、[VAR[HTTPファイル名]]に設定します。
= [50] それ以外なら、
== [55] [VAR[起源]]が [[null]] なら、
=== [56] [VAR[信頼された操作]]を、[[真]]に設定します。
== [57] それ以外なら、
=== [52] [VAR[応答]]の[F[URL][応答のURL]]の[F[scheme][URL scheme]]が [CODE(URI)@en[data][data:]]
なら、
@@ かつ[[リダイレクト]]以外の場合?
==== [53] [VAR[資源の起源]]を、[VAR[起源]]に設定します。
=== [54] それ以外なら、
==== [51] [VAR[資源の起源]]を、[VAR[応答]]の[F[URL][応答のURL]]の[F[起源][URLの起源]]に設定します。
=== [58] [VAR[信頼された操作]]を、
[VAR[起源]]と[VAR[資源の起源]]が[[同じ起源]]かどうかに設定します。
== [59] [VAR[信頼された操作]]が[[真]]で、[VAR[HTTPファイル名]]が [[null]]
でなければ、
=== [61] [VAR[ファイル名]]を、[VAR[HTTPファイル名]]に設定します。
== [62] それ以外なら、
=== [64] [VAR[信頼された操作]]が[[真]]か、[VAR[配置型]]が [CODE(MIME)@en[attachment]] なら、
==== [73] [VAR[ファイル名]]を、[VAR[提案ファイル名]]に設定します。
=== [63] [VAR[ファイル名]]が [[null]] なら、
==== [65] [VAR[信頼された操作]]が[[真]]か、[VAR[イベント]]が[[利用者]]の[[ダウンロード]]の指示があったことを示していれば、
===== [66] [VAR[ファイル名]]を、[VAR[応答]]の[F[URL][応答のURL]]から[[利用者エージェント]]依存の方法で決定した値に設定します。
==== [74] それ以外なら、
===== [75] [[利用者エージェント]]依存の方法で、[[利用者]]を保護するための手段を講じます。
[[著者]]が異なる[[起源]]の[[資源]]を[[利用者]]に[[ダウンロード]]させようとしていますが、
[[著者]]に悪意があって[[利用者]]を騙そうとしている場合もあります。
ここで停止して構いません。
===== [76] [VAR[ファイル名]]を、[[利用者エージェント]]依存の方法で決定した値に設定します。
([[利用者]]に決めさせたものでも構いません。)
= [78] [[利用者]]に[[ダイアログ]]を表示するなどして、
[VAR[ファイル名]]を編集させて構いません。
= [79] [[ファイルシステム]]の制約に合わせて、[VAR[ファイル名]]を調整します。
= [80] [[プラットフォーム][プラットフォーム (Web)]]が[[拡張子]]を使ってファイルの種別を判断するなら、
== [81] [VAR[資源の型]]を、 [VAR[応答]]の [F[Content-Typeメタデータ]]に設定します。
== [82] [VAR[名前の型]]を、[VAR[ファイル名]]の[F[拡張子]]から判断した型に設定します。
== [83] [VAR[資源の型]]と[VAR[名前の型]]が同じか、
[VAR[名前の型]]が[[利用者]]の意図に沿うもの (例えば[VAR[ファイル名]]の一部として[[利用者]]が明示的に指定したもの) かのどちらでもないなら、
=== [84] [VAR[資源の型]]の[[拡張子]]がわかるなら、
==== [85] [VAR[ファイル名]]を変更して、[VAR[資源の型]]の[[拡張子]]とします。
=== [86] それ以外で、[VAR[名前の型]]が危険なもの
([[実行可能ファイル]]、[[シェルスクリプト]]など) なら、
==== [87] [VAR[ファイル名]]に安全とわかっている[[拡張子]] ([CODE[.txt]] など)
を付加して構いません。
= [88] [VAR[ファイル名]]を返します。
]FIG]

[89] 保存'''先'''の決定には、[[著者]]側から提供された情報 ([VAR[HTTPファイル名]]や[VAR[提案ファイル名]]や[VAR[応答]]の[F[URL][応答のURL]]) を使う[SHOULD[べきではありません]]
[SRC[>>40]]。

[77] [[ダウンロード]]の処理は、
[[ハイパーリンクのダウンロード]]により、または[[navigate]]により、
呼び出されます。

[90] [[Webブラウザー]]によっては、[[利用者]]を保護するため、
[[ダウンロード]]したのが[[ウイルス]]その他危険な[[ファイル]]でないかを検査します。
[[Safe Browsing]] を使う実装もあります。

[92] 保存の具体的な動作は、[[プラットフォーム]]や[[Webブラウザー]]の制約や実装方針によって異なります。
例えば、次のように動作する実装があります。
[FIG(list)[
- [93] 保存中は[[利用者]]が指定した名前 + 適当な[[拡張子]]等を付けた別の[[ファイル名]]の[[ファイル]]とし、
保存が完了したら指定された名前に変更する。
- [94] 保存中は[[ファイル]]を[[ロック]]した状態で開いており、他の[[プロセス]]から操作できなくする。
]FIG]

[95] [[ダウンロード]]の進行中は、 [[ダウンロードマネージャー]]その他の
[[Webブラウザー]]の [[UI]] によって、そのことや進捗が[[利用者]]に提示されるのが一般的です。

[96] [[ダウンロード]]の進行中に、[[利用者]]が[[ダウンロード]]を中断、すなわち [[fetch]] を [[abort]]
できるのが普通です。

[97] [[利用者]]の指示により、または[[ネットワーク]]状況その他の理由により [[fetch]]
が中断されエラー終了した場合は、[[ダウンロード]]全体もまたエラー終了として扱う必要があります。
[[Webブラウザー]]依存の方法により、失敗であることやその状況を[[利用者]]に報告したり、
必要に応じて一時ファイルを削除したりする必要があります。

[101] [VAR[応答]]の [CODE(HTTP)@en[Last-Modified:]] [[ヘッダー]]で[[日時]]が設定されていれば、
これを[[ファイル]]の[[日時]]として使うべきと考えられます。設定されていないときや、
[[ファイルシステム]]の[[日時]]表現の範囲外の場合、
[[利用者]]の[[設定]]により特に望まれたときなどは、[[現在時刻]]に設定するべきと考えられます。

;; [102] [[ファイルシステム]]が認める[[日時]]の範囲内である限り、
[[ファイル]]の[[日時]]が原因で[[セキュリティー]]問題になることは中々考えにくいですが、
慎重を期すなら、[[現在時刻]]から何十年も前の[[日時]]や数年以上先の[[日時]]なら、
不正な指定として無視するべきとの考えもあるかもしれません。

[104] [[プラットフォーム]]によっては、
[[インターネット]]から入手した信頼できない[[ファイル]]を表す属性が[[ファイルシステム]]に存在することがあり、
[[Webブラウザー]]も適切に設定することが期待されています。
例えば [[Windows]] ([[NTFS]]) では [CODE[ZoneId]] を設定することが期待されます。

* ヘルパーアプリケーション

[37] [[navigate]]、[[ヘルパーアプリケーション]]も参照。

* [CODE(HTMLe)@en[a]] 要素 [CODE(HTMLa)@en[download]] 属性

[29] [CODE(HTMLe)@en[a]] [[要素]]の [DFN[[CODE(HTMLa)@en[download]]]]
[[属性]]は、当該[[ハイパーリンク]]が[[ダウンロード]]のためのものであることを示します。

** 属性値

[30] 本[[属性]]を指定しないと、[[ダウンロード]]ではなく、
通常の[[ハイパーリンクをたどる]]操作が想定される既定の動作であることを表します。

[31] 本[[属性]]を指定すると、当該[[ハイパーリンク]]が[[資源]]の[[ダウンロード]]のために使われることを[[著者]]が意図していることを表します
[SRC[>>28]]。

[32] 本[[属性]]に値を指定すると、[[ダウンロード]]した[[資源]]を手元の[[ファイルシステム]]に保存する際に[[名札]]として使うべき[[ファイル名]]の既定値として[[著者]]が推奨する値を表します
[SRC[>>28]]。

[33] 値には、制約はありません [SRC[>>28]]。
しかし[[ファイルシステム]]や[[プラットフォーム]]の制約、
あるいは[[利用者]]の指示によって[[ファイル名]]は適宜修正されるものですから、
[[著者]]が指定した値がそのまま使われるわけではありません。
[[拡張子]]の有無なども特に規定されていません。
([[プラットフォーム]]に依存するので、[[利用者エージェント]]が[[利用者]]を適当に誘導するべき事項でしょう。)

[38] 
[[ダウンロード]]して保存する先の[[ディレクトリー]] ([[フォルダー]])
を指定する方法はありません。
[[ディレクトリー]]の指定があっても、[[利用者エージェント]]は無視する[SHOULD[べき]]とされています。

** 処理

[34] [[ハイパーリンクのダウンロード]]を参照。

[35] 本[[属性]]は、[[ハイパーリンク]]の既定の動作を指定するものです。
[[利用者]]や[[利用者エージェント]]に[[ダウンロード]]を強制するものではありません。
[[文脈メニュー]]などを通して[[利用者]]が直接指示した場合は、
[[ダウンロード]]せずに[[ハイパーリンクをたどる]]こととなるかもしれません。

** 別ドメインからのダウンロード

[124] 
[[Webブラウザー]]は[[同じ起源]]でない ([[cross-origin]]) [[リンク]]の [CODE[download][download=""]]
[[属性]]を完全に無視し、通常の [[navigate]] を実行します。
[SRC[>>121, >>122, >>134]]

[125] 
ただし、 
[CODE[data:]] [[URL]] へのリンクは[[ダウンロード]]になります。

[126] 
他の[[ドメイン]]にあるファイルを[[ダウンロード]]させたいときは、
ファイルの[[応答ヘッダー]]で
[CODE[Content-Disposition: attachment]]
を指定しなければなりません。

-*-*-

[127] この挙動は本来の仕様に違反していますが、
[[セキュリティー]]のためとされ [SRC[>>123, >>122]]、
仕様の変更が提案されています [SRC[>>121]]。

* 法令との関係

[112] 本項の[[ダウンロード]]は、 [[Web]] における技術用語としての[[ダウンロード]]です。
これは各国の[[著作権]]等の[[法令]]や[[契約]]等における[[ダウンロード]]と必ずしも同じ意味ではありません。

* 歴史

[36] [CODE(HTMLa)@en[download]] [[属性]]は、需要を反映して、
[[HTML5]] で追加されました。

[1] [CITE@en[HTML5 Tracker]]
([TIME[2011-07-22 16:15:06 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=6317&to=6318>

[2] [CITE[''''''[''''''whatwg'''''']'''''' Forcing a download]]
( ([TIME[2011-07-22 23:58:54 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-July/032601.html>

[3] [CITE[''''''[''''''whatwg'''''']'''''' <a download> feedback]]
( ([TIME[2012-02-16 08:22:31 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-February/034880.html>

[4] [CITE['''['''whatwg''']''' <a download> feedback]]
([TIME[2012-06-08 11:28:51 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036320.html>

[5] [CITE[WWW-Talk Jan-Mar 1993: binary file access via Mosaic]]
( ([TIME[2013-03-09 04:06:44 +09:00]] 版))
<http://1997.webhistory.org/www.lists/www-talk.1993q1/0258.html>

[6] [CITE@en[676619 – Implement proposed download attribute]]
( ([TIME[2013-03-18 08:55:15 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=676619>

[7] [CITE@en[Web Applications 1.0 r7836     Fix <area> to match <a> in terms of security checking. Also, some editorial fixes.]]
( ([TIME[2013-04-16 04:11:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7835&to=7836>

[8] [CITE[''''''[''''''whatwg'''''']'''''' Priority between <a download> and content-disposition]]
( ([TIME[2013-08-13 21:25:48 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-August/040445.html>

[9] [CITE[Add download context per https://www.w3.org/Bugs/Public/show_bug.cgi?id=... · 69dfdc3 · whatwg/fetch]]
( ([TIME[2014-05-20 09:03:48 +09:00]] 版))
<https://github.com/whatwg/fetch/commit/69dfdc385ff40d48c06fede66b28a6aedbc848b0>

[FIG(quote)[
[FIGCAPTION[
[10] [CITE@en[1030660 – Is ClearBogusContentEncodingIfNeeded() needed?]]
([TIME[2015-03-06 13:52:40 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=1030660>
]FIGCAPTION]

> Note that specifically for the save-to-file behavior what we actually do is completely ignore the Content-Type when deciding whether to decode. We just compare the URI filename extension, if any, to the Content-Encoding.  If the Content-Encoding matches the filename extension, we don't undo the content encoding; otherwise we undo it.

]FIG]

[11] [CITE@en[184971 – display MIME type of the server in download dialog and not the mime-type returned by windows registry]]
([TIME[2015-04-11 22:35:21 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=184971>

* 実装

[12] 最近の [[Webブラウザー]]には、[[ダウンロード]]したファイルのセキュリティー検査を自動的に行うものもあります。



[FIG(quote)[
[FIGCAPTION[
[22] [CITE[Web Security Context: User Interface Guidelines]]
([TIME[2010-08-04 20:09:50 +09:00]] 版)
<http://www.w3.org/TR/wsc-ui/#robustness-software-install>
]FIGCAPTION]

> Web user agents MUST NOT expose programming interfaces which permit installation of software without a user intervention.
> User agents MUST inform the user and request consent when the user agent is attempting to install software outside of the agent environment as a result of web content. The interaction used MUST follow the requirements in 6.4.2 Warning/Caution Messages . User agents SHOULD NOT provide features which can be used by web content to install software outside of the agent environment without the user's consent.

]FIG]


[23] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 18:48:38 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>

[24] [CITE@en[MIME Type Detection in Windows Internet Explorer (Windows)]]
([TIME[2015-09-26 02:04:52 +09:00]] 版)
<https://msdn.microsoft.com/en-us/library/ms775147(v=vs.85).aspx>

[25] [CITE@en[Clarify the following/downloading hyperlink algorithms · whatwg/html@47e4aa0]]
([TIME[2015-11-05 17:14:39 +09:00]] 版)
<https://github.com/whatwg/html/commit/47e4aa05825df966848ca2c7773794576a130b88>

[FIG(quote)[
[FIGCAPTION[
[26] [CITE[IE9以降でダウンロード時file.exeがfile_exeにリネームされる件対処 - Qiita]]
([TIME[2016-01-08 11:52:02 +09:00]] 版)
<https://qiita.com/tukiyo3/items/dfcecb145a101addd2a1>
]FIGCAPTION]

> 「暗号化されたページをディスクに保存しない」のチェックを外す。
> OS再起動

]FIG]


[27] [CITE@en[URLs are parsed and produce records · whatwg/html@30bc255]]
([TIME[2016-02-14 22:58:30 +09:00]] 版)
<https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44>

[91] [CITE@en[Issue 610284 - chromium - Regression: 'Download as PDF' option is not working on 'www.chromium.org/Home'. - Monorail]]
( ([TIME[2016-05-15 11:32:15 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=610284>

[98] [CITE@en[Linking: borrow HTML attributes, explicitly allow nested links, cleanup]]
( ([[AmeliaBR]]著, [TIME[2016-06-22 21:54:34 +09:00]]))
<https://github.com/w3c/svgwg/commit/33f85d2bdd20e7d33eedff77b85b10c8451db397>

[99] [CITE@en[Allow <a>/<area> with download="" to not require user activation]]
([[domenic]]著, [TIME[2016-12-06 07:13:46 +09:00]])
<https://github.com/whatwg/html/commit/5de03c7b38e7b33a49f0dcf2bcef29e8eb9a2205>

[100] [CITE@en[Revert part of "Allow <a>/<area> with download="" to not require user…]]
([[zcorpan]]著, [TIME[2016-12-07 17:47:38 +09:00]])
<https://github.com/whatwg/html/commit/b359209579d79a713af88ecf24b9be8fb6168adf>

[103] [CITE[New Web Features in Safari 10.1 | WebKit]]
([TIME[2017-04-19 07:13:13 +09:00]])
<https://webkit.org/blog/7477/new-web-features-in-safari-10-1/>

[105] [CITE@ja[WindowsのSCFファイルをGoogle Chromeでダウンロードさせ、SMB認証情報を取得する攻撃 | スラド IT]]
([TIME[2017-05-21 15:16:49 +09:00]])
<https://it.srad.jp/story/17/05/20/224211/>

[106] [CITE@en[159292 - During download, "file.lnk" is renamed "file.download", name is _not_ fixed upon completion. - chromium - Monorail]]
( ([TIME[2017-08-11 02:40:21 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=159292>

[107] [CITE@en[346744 - Security: download attribute allows download without user interaction - chromium - Monorail]]
( ([TIME[2017-08-11 02:53:28 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=346744>

[108] [CITE@en[570210 - "Save link as" takes suggested filename from @download without checking origin. - chromium - Monorail]]
( ([TIME[2017-08-11 02:57:49 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=570210>

[109] [CITE@en[373182 - Wrong file name when clicking on data-uri anchor with "download" tag - chromium - Monorail]]
( ([TIME[2017-08-11 02:59:02 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=373182>

[110] [CITE@en[How to name videos in <source>? (missing spec) · Issue #2964 · whatwg/html]]
([TIME[2017-08-27 17:08:27 +09:00]])
<https://github.com/whatwg/html/issues/2964>

[111] [CITE@en[744499 - Consider downloading `ftp://` resources rather than rendering them. - chromium - Monorail]]
([TIME[2017-09-20 17:14:30 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=744499>

[113] [CITE@en[Deprecations and removals in Chrome 65  |  Web  |  Google Developers]]
([TIME[2018-03-06 04:54:20 +09:00]])
<https://developers.google.com/web/updates/2018/02/chrome-65-deprecations>

[114] [CITE@en[CORB: protecting certain nosniff and 206 responses]]
([[anforowicz]]著, [TIME[2018-05-17 16:24:03 +09:00]])
<https://github.com/whatwg/fetch/commit/794dd5452705564538440cc5b2c1f13d909e2f9a>

[115] [CITE@en[Allow Range header to be set by APIs]]
([[jakearchibald]]著, [TIME[2018-05-30 02:00:06 +09:00]])
<https://github.com/whatwg/fetch/commit/819d8c9d6617986a831ecd9cf21c34ba9589a890>

[116] [CITE@en[Correct the short definition for a/download values]]
([[AmeliaBR]]著, [TIME[2018-08-14 03:42:51 +09:00]])
<https://github.com/w3c/svgwg/commit/d1fffddbf1896910bbb5a5d2acf0dd896c06dd09>

[117] [CITE@en[Update SVGAElement to match attributes on HTMLAnchorElement by dstorey · Pull Request #409 · w3c/svgwg]]
([TIME[2018-08-15 13:27:25 +09:00]])
<https://github.com/w3c/svgwg/pull/409>

[118] [CITE@ja[非常に長い名前のBlobでFirefoxをクラッシュさせる攻撃 | スラド セキュリティ]]
([TIME[2018-09-28 15:27:16 +09:00]])
<https://security.srad.jp/story/18/09/27/085207/>

[119] [CITE@ja[多くの環境の "%USERPROFILE%\Downloads" が魔窟・ゴミ屋敷な現状を理解すべき (#3212395) | 「UNLHA32.DLL」が7年ぶりにアップデート | スラド]]
([TIME[2018-10-14 01:34:50 +09:00]])
<https://srad.jp/comment/3212395>

[120] [CITE@en[1030660 - Is ClearBogusContentEncodingIfNeeded() needed?]]
([TIME[2019-03-04 18:46:02 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=1030660>

[121] [CITE@en[Confusion on how to handle cross-origin download attribute · Issue #2562 · whatwg/html]]
([TIME[2019-12-02 11:07:12 +09:00]])
<https://github.com/whatwg/html/issues/2562>

[122] [CITE@en[714373 - Ignore <a download> for cross origin URLs - An open-source project to help move the web forward. - Monorail]]
([TIME[2019-12-02 11:07:52 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=714373>

[123] [CITE@en[Block cross-origin <a download> - Chrome Platform Status]]
([TIME[2019-12-02 11:08:21 +09:00]])
<https://www.chromestatus.com/feature/4969697975992320>


[128] 
最近の [[Chrome]] はファイルをダウンロードしろと指示出してるのに[[素のHTTP]]だと警告だしてダウンロードしてくれない、警告に対して再度指示しないとダウンロードしてくれないようになったのが本当にうざい。
[TIME[2023-12-15T12:46:51.600Z]]


[129] 
100歩譲って [[HTTPS]] から[[素のHTTP]]にリンクされてる[[ダウンロード]]が警告されるのはまあいいでしょう。実際危険な行為なんだから。
でも[[素のHTTP]]から[[素のHTTP]]にリンクされてる[[ダウンロード]]を差し止めるのは意味不明じゃないですか。
[[素のHTTP]]のウェブページを開いた時点でリスクはもうあって、そのリスクを織り込んで表示して、そこからダウンロードしろといってんの。危険なことなんてわかっててやれっていってんの。


[130] [[素のHTTP]]からの [CODE[data:]] [[URL]] の[[ダウンロード]]も警告でるんよね。まあ理屈はわかるんだけど。。。
でも誰も得していない。

[131] 
何がよろしくないって、[[セキュリティー]]を[[錦の御旗]]にして大して実害がない機能までぶっ壊して[[後方互換性]]という[[ウェブ]]の[[重要な価値][ウェブ互換性]]を毀損してることよね。
これに限らず [[Chrome]] チームがやっていることにそういうのが多くて、世論の
[[Google]] への不信感を増幅させてるし、なにより [[HTTPS化]]というウェブ界の安全のための共通目標に対する嫌悪感を生んでいるのが罪深い。





