Attachment

Content-Disposition: attachment (MIME、HTTP)

[6] disposition型 attachment は、 当該本体部分添付ファイルダウンロードファイルであることを表します。

仕様書

意味

[4] MIME におけるdisposition型 attachment は、 当該実体メールメッセージの主たる部分からは分離されており、 自動的に表示するべきではなく、利用者が何らかの操作を行った際に表示されるべきことを示しています >>3

[11] HTTP におけるdisposition型 attachment は、 受信者が通常通り (MIME型に従って) 処理するのでなく、 手元に保存するか利用者に確認するべき (should) であることを表します >>10

[20] SDP におけるdisposition型 attachment は、 自動的に表示するのではなく、何らかの利用者の指示を受けて表示するべきことを表します >>19

処理モデル

[13] HTTP (Webブラウザーnavigate) では、 Content-Disposition: attachmentダウンロードとして扱われます >>12

[15] download 属性によるファイル名の決定にも関わります >>16, >>14

レンダリング

[5] MUA添付を表すアイコンを表示したり、 添付の一覧を表示したりして、そこから表示や保存を選択できるようにすることができます >>3

歴史

[9] RFC 1806 で定義され、改訂された RFC 2183 にも引き継がれています。

[2] 2 [Wiki] ファイル添付の脆弱性に関するブラウザの調査 - ふぇみにん日記 (2005-05-21) <http://kazuhiko.tdiary.net/20050521.html#p02>

早い話が「なんでも添付できて、それをそのままウェブブラウザで表示できるとやばい」というわけなのですが、その回避方法として、

  • HTML として扱わせない (Content-Type を別にする)
  • ブラウザに表示させない (Content-Disposition: attachment にする)

という二つの方法があります。

(名無しさん 2005-05-24 23:58:01 +00:00)

[1] 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] content-disposition:attachment ヘッダを返すコンテンツにアクセスすると、親フレームが消えてしまう <http://support.microsoft.com/?scid=kb;ja;889656>

新規に開かれたウィンドウ内のフレーム構成のコンテンツの子フレームから content-disposition:attachment ヘッダが付加されたコンテンツにアクセスした際に、呼び出しもとの親フレームのウィンドウが消えてしまう場合があります。

WinIE の実装ってすごく不思議なことがいろいろ起こりますよね。

[56] [IE] Content-Disposition: attachment でファイルをダウンロードするとフレームが更新されなくなる <http://support.microsoft.com/default.aspx?scid=kb;ja;418126>

Internet Explorer でサーバーから Content-Disposition: attachment ヘッダーによって渡されたファイルを保存すると、その後フレームの内容を更新するようなリンクが反応しなくなります。

また、このとき、スクリプトを実行している場合は、「アクセスが拒否されました」というエラーのダイアログが表示される場合があります。

WinIE ってつくづく不思議v 回避策も意味不明で素敵w

[8] iOSのSafariがContent-Dispositionを無視する問題が修正された | 水無月ばけらのえび日記 ( 版) <http://bakera.jp/ebi/topic/4598>

[18] RFC 2616HTTP において Content-Disposition: attachment を使用できるのは application/octet-stream の時のみとしていましたが、 実情にあっていないとして RFC 6266 でそのような制限は削除されました >>17

関連

[7] 多くの場合 filename 引数によってファイル名が指定されますが、 これは必須ではありません。

[21] Abusing JSONP with Rosetta Flash ( (Michele Spagnuolo著, )) <https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/>

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.