Content-Dispositionヘッダー
通常の HTTP レスポンスにおける Content-Disposition レスポンスヘッダーは、コンテンツがブラウザーでインラインで表示されることを求められているか、つまり、ウェブページとして表示するか、ウェブページの一部として表示するか、ダウンロードしてローカルに保存する添付ファイルとするかを示します。
本文適用のレスポンスヘッダーとして
-
inline
: ページの一部 or ページとして表示可能であることを示す -
attachment
: ダウンロードすべきであることを示す-
filename
: ほとんどのブラウザは、この値を使って「名前をつけて保存」ダイアログを表示する?
-
マルチパート本文のヘッダーとして
form-data
ディレクティブ
-
name
: formのHTMLフィールド名?を含む文字列? -
filename
: 送信元のファイル名を含む文字列 -
filename*
: RFC 5987で定義されているエンコーディングを使用するという点がfilename
との差異。filename*
とfilename
だとfilename*
が優先。
Warning: The string following
filename
should always be put into quotes; but, for compatibility reasons, many browsers try to parse unquoted names that contain spaces.
filename
は常にクォーテーションで囲うべきだけども、互換性を保つため、空白を含むクォーテーションで囲われていなくても解釈しようと多くのブラウザがするそう
disposition
とは?
性質、気質、性癖、傾向、たち、感じ、気持ち、配置、配列、配備
filename
の値を取得するには
/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/
では、attachment; filename*=UTF-8''filename.txt
のようなケースがカバーできていないとコメントがある。
Direct the UA to show "save as" dialog, with a filename containing
the Unicode character U+20AC (EURO SIGN):Content-Disposition: attachment; filename*= UTF-8''%e2%82%ac%20rates
Here, the encoding defined in [RFC5987] is also used to encode the
non-ISO-8859-1 character.
文字化けを避けるため、エンコード指定を↑のようにUTF-8
を指定して、''
を区切り文字としてファイル名の値との間に挟む?