[18] ダウンロードは、 クライアントがサーバーから受信する操作をいいます。 多くの場合、クライアント側のファイルシステム等のデータベースに保存する操作までを含めてダウンロードといいます。
[13] 多くの Webブラウザーは、 navigate 時のダウンロードの他に、 表示中の文書の保存や、画像、媒体等の保存の機能を提供しています。
[14] 文書の保存は、元の HTML の保存だけでなく、表示中の文書の直列化や、 表示中の文書とそれに埋め込まれている画像や CSS 等の一式の保存、 平文化して保存といった機能が提供されていることがあります。
[15] 「Web ページ、完全」で保存すると、 Chrome と Firefox
の場合は拡張子以外のファイル名 +
_files
、 IE の場合は拡張子以外のファイル名 + .files
という名前のフォルダーが作られ、その中に画像等のファイルが保存されます。
[39] fetch の結果の応答をダウンロードとして処理するとは、 起源と提案ファイル名やイベントについて、 次のようにするべきです >>40。
[45] 一般的なWebブラウザーは、 fetch 開始直後、または応答ヘッダー受信時点で、 利用者にファイル名を尋ねるダイアログを表示します。 あるいは実装と設定によっては、ダイアログなしでダウンロード用のディレクトリーに自動的に保存します。
[46] 利用者エージェントは、ファイル名が必要な場合、 次のように決定するべきです。 この手順は信頼できないサイトからのダウンロードの危険性を緩和しようとするものですから、 利用者エージェントはこれに従うことが強く推奨されています。 >>40
[89] 保存先の決定には、著者側から提供された情報 (HTTPファイル名や提案ファイル名や応答のURL) を使うべきではありません >>40。
[77] ダウンロードの処理は、 ハイパーリンクのダウンロードにより、またはnavigateにより、 呼び出されます。
[90] Webブラウザーによっては、利用者を保護するため、 ダウンロードしたのがウイルスその他危険なファイルでないかを検査します。 Safe Browsing を使う実装もあります。
[92] 保存の具体的な動作は、プラットフォームやWebブラウザーの制約や実装方針によって異なります。 例えば、次のように動作する実装があります。
[95] ダウンロードの進行中は、 ダウンロードマネージャーその他の Webブラウザーの UI によって、そのことや進捗が利用者に提示されるのが一般的です。
[96] ダウンロードの進行中に、利用者がダウンロードを中断、すなわち fetch を abort できるのが普通です。
[97] 利用者の指示により、またはネットワーク状況その他の理由により fetch が中断されエラー終了した場合は、ダウンロード全体もまたエラー終了として扱う必要があります。 Webブラウザー依存の方法により、失敗であることやその状況を利用者に報告したり、 必要に応じて一時ファイルを削除したりする必要があります。
[101] 応答の Last-Modified:
ヘッダーで日時が設定されていれば、
これをファイルの日時として使うべきと考えられます。設定されていないときや、
ファイルシステムの日時表現の範囲外の場合、
利用者の設定により特に望まれたときなどは、現在時刻に設定するべきと考えられます。
[104] プラットフォームによっては、
インターネットから入手した信頼できないファイルを表す属性がファイルシステムに存在することがあり、
Webブラウザーも適切に設定することが期待されています。
例えば Windows (NTFS) では ZoneId
を設定することが期待されます。
[37] navigate、ヘルパーアプリケーションも参照。
a
要素 download
属性[29] a
要素の download
属性は、当該ハイパーリンクがダウンロードのためのものであることを示します。
[30] 本属性を指定しないと、ダウンロードではなく、 通常のハイパーリンクをたどる操作が想定される既定の動作であることを表します。
[31] 本属性を指定すると、当該ハイパーリンクが資源のダウンロードのために使われることを著者が意図していることを表します >>28。
[32] 本属性に値を指定すると、ダウンロードした資源を手元のファイルシステムに保存する際に名札として使うべきファイル名の既定値として著者が推奨する値を表します >>28。
[33] 値には、制約はありません >>28。 しかしファイルシステムやプラットフォームの制約、 あるいは利用者の指示によってファイル名は適宜修正されるものですから、 著者が指定した値がそのまま使われるわけではありません。 拡張子の有無なども特に規定されていません。 (プラットフォームに依存するので、利用者エージェントが利用者を適当に誘導するべき事項でしょう。)
[38] ダウンロードして保存する先のディレクトリー (フォルダー) を指定する方法はありません。 ディレクトリーの指定があっても、利用者エージェントは無視するべきとされています。
[34] ハイパーリンクのダウンロードを参照。
[35] 本属性は、ハイパーリンクの既定の動作を指定するものです。 利用者や利用者エージェントにダウンロードを強制するものではありません。 文脈メニューなどを通して利用者が直接指示した場合は、 ダウンロードせずにハイパーリンクをたどることとなるかもしれません。
[124]
Webブラウザーは同じ起源でない (cross-origin) リンクの download
属性を完全に無視し、通常の navigate を実行します。
>>121, >>122, >>134
[125]
ただし、
data:
URL へのリンクはダウンロードになります。
[126]
他のドメインにあるファイルをダウンロードさせたいときは、
ファイルの応答ヘッダーで
Content-Disposition: attachment
を指定しなければなりません。
[127] この挙動は本来の仕様に違反していますが、 セキュリティーのためとされ >>123, >>122、 仕様の変更が提案されています >>121。
[112] 本項のダウンロードは、 Web における技術用語としてのダウンロードです。 これは各国の著作権等の法令や契約等におけるダウンロードと必ずしも同じ意味ではありません。
[36] download
属性は、需要を反映して、
HTML5 で追加されました。
[1] HTML5 Tracker ( 版) http://html5.org/tools/web-apps-tracker?from=6317&to=6318
[2] [whatwg] Forcing a download ( ( 版)) http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-July/032601.html
[3] [whatwg] <a download> feedback ( ( 版)) http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-February/034880.html
[4] [whatwg] <a download> feedback ( 版) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-June/036320.html
[5] WWW-Talk Jan-Mar 1993: binary file access via Mosaic ( ( 版)) http://1997.webhistory.org/www.lists/www-talk.1993q1/0258.html
[6] 676619 – Implement proposed download attribute ( ( 版)) https://bugzilla.mozilla.org/show_bug.cgi?id=676619
[7] Web Applications 1.0 r7836 Fix <area> to match <a> in terms of security checking. Also, some editorial fixes. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7835&to=7836
[8] [whatwg] Priority between <a download> and content-disposition ( ( 版)) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-August/040445.html
[9] Add download context per https://www.w3.org/Bugs/Public/show_bug.cgi?id=... · 69dfdc3 · whatwg/fetch ( ( 版)) https://github.com/whatwg/fetch/commit/69dfdc385ff40d48c06fede66b28a6aedbc848b0
[11] 184971 – display MIME type of the server in download dialog and not the mime-type returned by windows registry ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=184971
[12] 最近の Webブラウザーには、ダウンロードしたファイルのセキュリティー検査を自動的に行うものもあります。
[23] Integrate Fetch into HTML · whatwg/html@7c5555a ( 版) https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22
[24] MIME Type Detection in Windows Internet Explorer (Windows) ( 版) https://msdn.microsoft.com/en-us/library/ms775147(v=vs.85).aspx
[25] Clarify the following/downloading hyperlink algorithms · whatwg/html@47e4aa0 ( 版) https://github.com/whatwg/html/commit/47e4aa05825df966848ca2c7773794576a130b88
[27] URLs are parsed and produce records · whatwg/html@30bc255 ( 版) https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44
[91] Issue 610284 - chromium - Regression: 'Download as PDF' option is not working on 'www.chromium.org/Home'. - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=610284
[98] Linking: borrow HTML attributes, explicitly allow nested links, cleanup ( (AmeliaBR著, )) https://github.com/w3c/svgwg/commit/33f85d2bdd20e7d33eedff77b85b10c8451db397
[99] Allow <a>/<area> with download="" to not require user activation (domenic著, ) https://github.com/whatwg/html/commit/5de03c7b38e7b33a49f0dcf2bcef29e8eb9a2205
[100] Revert part of "Allow <a>/<area> with download="" to not require user… (zcorpan著, ) https://github.com/whatwg/html/commit/b359209579d79a713af88ecf24b9be8fb6168adf
[103] New Web Features in Safari 10.1 | WebKit () https://webkit.org/blog/7477/new-web-features-in-safari-10-1/
[105] WindowsのSCFファイルをGoogle Chromeでダウンロードさせ、SMB認証情報を取得する攻撃 | スラド IT () https://it.srad.jp/story/17/05/20/224211/
[106] 159292 - During download, "file.lnk" is renamed "file.download", name is _not_ fixed upon completion. - chromium - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=159292
[107] 346744 - Security: download attribute allows download without user interaction - chromium - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=346744
[108] 570210 - "Save link as" takes suggested filename from @download without checking origin. - chromium - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=570210
[109] 373182 - Wrong file name when clicking on data-uri anchor with "download" tag - chromium - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=373182
[110] How to name videos in <source>? (missing spec) · Issue #2964 · whatwg/html () https://github.com/whatwg/html/issues/2964
[111] 744499 - Consider downloading `ftp://` resources rather than rendering them. - chromium - Monorail () https://bugs.chromium.org/p/chromium/issues/detail?id=744499
[113] Deprecations and removals in Chrome 65 | Web | Google Developers () https://developers.google.com/web/updates/2018/02/chrome-65-deprecations
[114] CORB: protecting certain nosniff and 206 responses (anforowicz著, ) https://github.com/whatwg/fetch/commit/794dd5452705564538440cc5b2c1f13d909e2f9a
[115] Allow Range header to be set by APIs (jakearchibald著, ) https://github.com/whatwg/fetch/commit/819d8c9d6617986a831ecd9cf21c34ba9589a890
[116] Correct the short definition for a/download values (AmeliaBR著, ) https://github.com/w3c/svgwg/commit/d1fffddbf1896910bbb5a5d2acf0dd896c06dd09
[117] Update SVGAElement to match attributes on HTMLAnchorElement by dstorey · Pull Request #409 · w3c/svgwg () https://github.com/w3c/svgwg/pull/409
[118] 非常に長い名前のBlobでFirefoxをクラッシュさせる攻撃 | スラド セキュリティ () https://security.srad.jp/story/18/09/27/085207/
[119] 多くの環境の "%USERPROFILE%\Downloads" が魔窟・ゴミ屋敷な現状を理解すべき (#3212395) | 「UNLHA32.DLL」が7年ぶりにアップデート | スラド () https://srad.jp/comment/3212395
[120] 1030660 - Is ClearBogusContentEncodingIfNeeded() needed? () https://bugzilla.mozilla.org/show_bug.cgi?id=1030660
[121] Confusion on how to handle cross-origin download attribute · Issue #2562 · whatwg/html () https://github.com/whatwg/html/issues/2562
[122] 714373 - Ignore <a download> for cross origin URLs - An open-source project to help move the web forward. - Monorail () https://bugs.chromium.org/p/chromium/issues/detail?id=714373
[123] Block cross-origin <a download> - Chrome Platform Status () https://www.chromestatus.com/feature/4969697975992320
[128] 最近の Chrome はファイルをダウンロードしろと指示出してるのに素のHTTPだと警告だしてダウンロードしてくれない、警告に対して再度指示しないとダウンロードしてくれないようになったのが本当にうざい。
[129] 100歩譲って HTTPS から素のHTTPにリンクされてるダウンロードが警告されるのはまあいいでしょう。実際危険な行為なんだから。 でも素のHTTPから素のHTTPにリンクされてるダウンロードを差し止めるのは意味不明じゃないですか。 素のHTTPのウェブページを開いた時点でリスクはもうあって、そのリスクを織り込んで表示して、そこからダウンロードしろといってんの。危険なことなんてわかっててやれっていってんの。
[130] 素のHTTPからの data:
URL のダウンロードも警告でるんよね。まあ理屈はわかるんだけど。。。
でも誰も得していない。
[131] 何がよろしくないって、セキュリティーを錦の御旗にして大して実害がない機能までぶっ壊して後方互換性というウェブの重要な価値を毀損してることよね。 これに限らず Chrome チームがやっていることにそういうのが多くて、世論の Google への不信感を増幅させてるし、なにより HTTPS化というウェブ界の安全のための共通目標に対する嫌悪感を生んでいるのが罪深い。