この翻訳は不完全です。英語から この記事を翻訳 してください。

通常の HTTP レスポンスにおける Content-Disposition レスポンスヘッダーは、コンテンツがブラウザーでインラインで表示されることを求められているか、つまり、ウェブページとして表示するか、ウェブページの一部として表示するか、ダウンロードしてローカルに保存する添付ファイルとするかを示します。

本文が multipart/form-data である場合、 Content-Disposition ヘッダーは、マルチパートを構成する各サブパートに付与され、そのフィールドに関する情報を示します。サブパートはContent-Type ヘッダーで定義された boundary によって区切られます。マルチパートの本文体に付与した場合、 Content-Disposition は何の意味も持ちません。

Content-Disposition ヘッダーは電子メールにおける MIME メッセージのより広い用途で定義されたものですが、 HTTP のフォームと POST リクエストに利用可能な引数は一部だけです。ヘッダーの値である form-data と、省略可能なディレクティブ namefilename のみが HTTP の用途で使用することができます。

ヘッダー種別 レスポンスヘッダー (本文の場合)
一般ヘッダー (マルチパート本文の一部の場合)
禁止ヘッダー名 いいえ

構文

メインボディに適用するレスポンスヘッダーとして

この用法では、inline (デフォルト値。ウェブページの一部として、またはウェブページとして表示可能であることを示します)、もしくは attachment (ダウンロードすべきであることを示します。多くのブラウザは filename パラメーターの値を使い、「名前を付けて保存」ダイアログを表示します) を最初のパラメーターとして指定します。

Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename="filename.jpg"

マルチパート本文で使うヘッダーとして

この用法では最初の引数は常に form-data です。追加のパラメーターは大文字小文字を区別せず、'=' 記号に続けてクォートされた文字列で引数を指定します。複数のパラメーターはセミコロン (';') で区切ります。

Content-Disposition: form-data
Content-Disposition: form-data; name="fieldName"
Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"

ディレクティブ

name
Is followed by a string containing the name of the HTML field in the form that the content of this subpart refers to. When dealing with multiple files in the same field (for example, the multiple attribute of an <input type=file> element), there can be several subparts with the same name.
A name with a value of '_charset_' indicates that the part is not an HTML field, but the default charset to use for parts without explicit charset information.
filename
送信された元のファイル名を含む文字列を指定します。この filename は常に任意であり、アプリケーションで使用する際は注意が必要です。例えばパス情報を取り除いたり、サーバーのファイルシステムに合わせてファイル名の変換を行ったりすべきです。This parameter provides mostly indicative information. Content-Disposition: attachment と組み合わせて使用すれば、「名前を付けて保存」ダイアログのデフォルトのファイル名になります。
filename*

filename パラメーターと filename* パラメーターの唯一の違いは、filename* では RFC 5987 に基づきエンコードした値を使用できることです。一つのヘッダに filename と filename* の両方が存在している場合、filename* は filename より優先されます。

A response triggering the "Save As" dialog:

200 OK
Content-Type: text/html; charset=utf-8
Content-Disposition: attachment; filename="cool.html"
Content-Length: 22

<HTML>Save me!</HTML>

このサンプルHTMLファイルは、ブラウザに表示されるのではなく、通常のダウンロードとして保存されます。ほとんどのブラウザは、cool.htmlというファイル名で保存することを提案します(デフォルトでは)。

An example of HTML form, posted using the multipart/form-data format that makes use of the Content-Disposition header:

POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"

--boundary
Content-Disposition: form-data; name="field1"

value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"

value2
--boundary--

仕様書

仕様書 タイトル
RFC 7578 Returning Values from Forms: multipart/form-data
RFC 6266 Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)
RFC 2183 Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 ありIE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応

Compatibility notes

  • Firefox 5 handles the Content-Disposition HTTP response header more effectively if both the filename and filename* parameters are provided; it looks through all provided names, using the filename* parameter if one is available, even if a filename parameter is included first. Previously, the first matching parameter would be used, thereby preventing a more appropriate name from being used. See バグ 588781.

関連情報

ドキュメントのタグと貢献者

タグ: 
このページの貢献者: mfuji09, unarist, yuji38kwmt
最終更新者: mfuji09,