[6] [[disposition型]] [DFN[[CODE(MIME)@en[[[attachment]]]]]] は、
当該[[本体部分]]が[[添付ファイル]]や[[ダウンロード]]ファイルであることを表します。

* 仕様書

[REFS[
- [3] [CITE@en[RFC 2183 - Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field]] ([TIME[2014-09-07 04:20:15 +09:00]] 版) <http://tools.ietf.org/html/rfc2183#section-2.2>
- [10] [CITE@en[RFC 6266 - Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)]] ([TIME[2014-10-13 05:17:21 +09:00]] 版) <http://tools.ietf.org/html/rfc6266#section-4.2>
- [12] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-10-30 18:30:38 +09:00]] 版) <https://html.spec.whatwg.org/#navigating-across-documents:http-content-disposition>
- [16] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-10-30 18:30:38 +09:00]] 版) <https://html.spec.whatwg.org/#downloading-resources:http-content-disposition-3>
- [14] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-10-30 18:30:38 +09:00]] 版) <https://html.spec.whatwg.org/#downloading-resources:http-content-disposition-5>
- [19] [CITE@en[RFC 5547 - A Session Description Protocol (SDP) Offer/Answer Mechanism to Enable File Transfer]] ([TIME[2014-09-13 18:22:39 +09:00]] 版) <https://tools.ietf.org/html/rfc5547#section-7>
]REFS]

* 意味

[4] [[MIME]] における[[disposition型]] [CODE(MIME)@en[[[attachment]]]] は、
当該[[実体]]が[[メール]]の[[メッセージ]]の主たる部分からは分離されており、
自動的に表示するべきではなく、[[利用者]]が何らかの操作を行った際に表示されるべきことを示しています
[SRC[>>3]]。

[11] [[HTTP]] における[[disposition型]] [CODE(MIME)@en[[[attachment]]]] は、
[[受信者]]が通常通り ([[MIME型]]に従って) 処理するのでなく、
手元に保存するか[[利用者]]に確認する[RUBYB[べき]@en[should]]であることを表します [SRC[>>10]]。

[20] [[SDP]] における[[disposition型]] [CODE(MIME)@en[[[attachment]]]] は、
自動的に表示するのではなく、何らかの[[利用者]]の指示を受けて表示するべきことを表します
[SRC[>>19]]。

* 処理モデル

[13] [[HTTP]] ([[Webブラウザー]]の [[navigate]]) では、
[CODE(HTTP)@en[[[Content-Disposition: attachment]]]] は[[ダウンロード]]として扱われます
[SRC[>>12]]。

[15] [CODE(HTMLa)@en[[[download]]]] [[属性]]による[[ファイル名]]の決定にも関わります
[SRC[>>16, >>14]]。

* レンダリング

[5] [[MUA]] は[[添付]]を表す[[アイコン]]を表示したり、
[[添付]]の一覧を表示したりして、そこから表示や保存を選択できるようにすることができます
[SRC[>>3]]。

* 歴史

[9] [[RFC 1806]] で定義され、改訂された [[RFC 2183]] にも引き継がれています。

[2]
[CITE[2 [Wiki] ファイル添付の脆弱性に関するブラウザの調査 - ふぇみにん日記 (2005-05-21)]] <http://kazuhiko.tdiary.net/20050521.html#p02>

> 早い話が「なんでも添付できて、それをそのままウェブブラウザで表示できるとやばい」というわけなのですが、その回避方法として、
- HTML として扱わせない (Content-Type を別にする)
- ブラウザに表示させない (Content-Disposition: attachment にする)
> という二つの方法があります。

([[名無しさん]] [WEAK[2005-05-24 23:58:01 +00:00]])

[1]
[CODE(HTTP)@en[[[Content-Disposition:]] [[attachment]]]] がついてると[[ダウンロード]]になって
[[Webブラウザー]]内では直接開けないような実装になってるみたいですが (少なくても
[[Firefox3]] は。)、 [[wiki]] や[[うpろーだ]]に [[HTML]] や[[画像]]や[[平文]]が[[うp]]されているときに一々[[ダウンロード]]して[[保存]]しないと開けないのは不便なので、
直接 [[Webブラウザー]]内で開くような選択肢を用意して欲しいものです。

[24] ''Bug 2781 - freemail.ne.jp(GraceMail)でメール本文が表示されない(Content-disposition: attachment)'' <http://bugzilla.mozilla.gr.jp/show_bug.cgi?id=2781>

[[Mozilla]] の動作が規格により従う形に変更された際に意図せぬ動作をするようになった例。

[55]
[CITE[content-disposition:attachment ヘッダを返すコンテンツにアクセスすると、親フレームが消えてしまう]] <http://support.microsoft.com/?scid=kb;ja;889656>

> 新規に開かれたウィンドウ内のフレーム構成のコンテンツの子フレームから content-disposition:attachment ヘッダが付加されたコンテンツにアクセスした際に、呼び出しもとの親フレームのウィンドウが消えてしまう場合があります。

[[WinIE]] の実装ってすごく不思議なことがいろいろ起こりますよね。

[56]
[CITE[[IE] Content-Disposition: attachment でファイルをダウンロードするとフレームが更新されなくなる]] <http://support.microsoft.com/default.aspx?scid=kb;ja;418126>

> Internet Explorer でサーバーから Content-Disposition: attachment ヘッダーによって渡されたファイルを保存すると、その後フレームの内容を更新するようなリンクが反応しなくなります。
> また、このとき、スクリプトを実行している場合は、「アクセスが拒否されました」というエラーのダイアログが表示される場合があります。

WinIE ってつくづく不思議v 回避策も意味不明で素敵w

[8] [CITE@ja[iOSのSafariがContent-Dispositionを無視する問題が修正された | 水無月ばけらのえび日記]] ([TIME[2014-10-21 09:13:38 +09:00]] 版) <http://bakera.jp/ebi/topic/4598>

[18] [[RFC 2616]] は [[HTTP]] において [CODE(MIME)@en[[[Content-Disposition: attachment]]]]
を使用できるのは [CODE(MIME)@en[[[application/octet-stream]]]] の時のみとしていましたが、
実情にあっていないとして [[RFC 6266]] でそのような制限は削除されました [SRC[>>17]]。

[REFS[
- [17] [CITE@en[RFC 6266 - Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)]] ([TIME[2014-10-13 05:17:21 +09:00]] 版) <http://tools.ietf.org/html/rfc6266#appendix-A>
]REFS]

* 関連

[7] 多くの場合 [CODE(MIME)@en[[[filename]]]] [[引数]]によって[[ファイル名]]が指定されますが、
これは必須ではありません。

[FIG(quote)[
[FIGCAPTION[
[21] [CITE@en[Abusing JSONP with Rosetta Flash]]
( ([[Michele Spagnuolo]]著, [TIME[2017-03-10 12:48:46 +09:00]]))
<https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/>
]FIGCAPTION]

> A mitigation is to make endpoints return the HTTP header Content-Disposition: attachment; filename=f.txt, forcing a file download. This is enough for instructing Flash Player not to run the SWF starting from Adobe Flash 10.2.

]FIG]
