--- title: Content-Disposition slug: Web/HTTP/Headers/Content-Disposition tags: - HTTP - Reference - header translation_of: Web/HTTP/Headers/Content-Disposition ---
通常の HTTP レスポンスにおける Content-Disposition
レスポンスヘッダーは、コンテンツがブラウザーでインラインで表示されることを求められているか、つまり、ウェブページとして表示するか、ウェブページの一部として表示するか、ダウンロードしてローカルに保存する添付ファイルとするかを示します。
本文が multipart/form-data
である場合、 Content-Disposition
ヘッダーは、マルチパートを構成する各サブパートに付与され、そのフィールドに関する情報を示します。サブパートは{{HTTPHeader("Content-Type")}} ヘッダーで定義された boundary によって区切られます。マルチパートの本文自体に付与した場合、 Content-Disposition
は何の意味も持ちません。
Content-Disposition
ヘッダーはメールにおける MIME メッセージのより広い用途で定義されたものですが、 HTTP のフォームと {{HTTPMethod("POST")}} リクエストに利用可能な引数は一部だけです。ヘッダーの値である form-data
と、省略可能なディレクティブ name
と filename
のみが HTTP の用途で使用することができます。
ヘッダー種別 | {{Glossary("Response header", "レスポンスヘッダー")}} (本文の場合) {{Glossary("General header", "一般ヘッダー")}} (マルチパート本文の一部の場合) |
---|---|
{{Glossary("Forbidden header name", "禁止ヘッダー名")}} | いいえ |
この用法では、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
{{HTMLElement("input","<input type=\"file\">")}}
要素の {{htmlattrxref("multiple", "input")}} 属性)、同じ名前を持つ複数のサブパートが存在することがあります。name
の値が '_charset_'
という値である場合は、その部分が HTML フィールドではなく、明示的な文字セット情報のない部分に使用される既定の文字セットであることを示します。filename
Content-Disposition: attachment
と組み合わせて使用すると、ユーザーに表示される「名前を付けて保存」ダイアログの既定のファイル名として使用されます。filename*
引数の filename
と filename*
の違いは、 filename*
が RFC 5987 で定義されているエンコーディングを使用するという点のみです。単一のヘッダーフィールドの値に filename
と filename*
の両方が存在する場合は、両方が解釈できる場合、 filename*
が filename
よりも優先されます。
「ファイル名を付けて保存」ダイアログを起動するレスポンスです。
200 OK Content-Type: text/html; charset=utf-8 Content-Disposition: attachment; filename="cool.html" Content-Length: 21 <HTML>Save me!</HTML>
このサンプル HTML ファイルは、ブラウザーに表示されるのではなく、通常のダウンロードとして保存されます。ほとんどのブラウザーは、 (既定で) cool.html
というファイル名で保存することを提案します。
multipart/form-data
形式を使用して送信された HTML フォームの例で、 Content-Disposition
ヘッダーを使用したものです。
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 |
{{Compat("http.headers.Content-Disposition")}}
Content-Disposition
レスポンスヘッダーで filename
と filename*
の両引数が提供されている場合、より効果的に処理します。 filename
引数が先にあった場合でも、提供されたすべての名前を調べ、利用可能な場合は filename*
引数を使用します。以前は、先に一致した引数がより適切な名前が使われていませんでした。 {{bug(588781)}} を参照してください。