[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
質問
Webアプリケーションで、あるリソースを強制的に
ダウンロード
直接ではなく
レンダリング
をWebブラウザで発行しています。
Content-Disposition
ヘッダをフォームのHTTPレスポンスに追加します。
Content-Disposition: attachment; filename=FILENAME
は
filename
パラメータは、ブラウザがリソースをダウンロードする際のファイル名を指定するために使用します。
RFC2183
(Content-Disposition)では、以下のように記述されています。
セクション2.3
(The Filename Parameter)では、ファイル名にはUS-ASCII文字のみを使用することができます。
現在の[RFC 2045]の文法では、以下のように制限されています。 パラメータ値(したがって Content-Dispositionのファイル名) US-ASCIIです。 私たちは を許容することが望ましい。 ファイル名の文字セットですが、これは この文書の範囲外である。 必要なメカニズムを定義する。
とはいえ、現在普及しているほとんどのウェブブラウザは、US-ASCII以外の文字を許可しているようですが、(標準がないため)ファイル名のエンコード方式や文字セット指定については意見が分かれている、という経験的な証拠があります。問題は、ファイル名「naïvefile」(引用符なし、3文字目がU+00EF)をContent-Dispositionヘッダーにエンコードする必要がある場合、人気のあるブラウザが採用するさまざまなスキームやエンコーディングは何なのか、ということです。
この質問の趣旨からすると ポピュラーブラウザ である。
- グーグルクローム
- サファリ
- Internet ExplorerまたはEdge
- ファイヤーフォックス
- オペラ
解決方法は?
これについては、ブラウザテストや後方互換性へのリンクも含めて、提案されている RFC 5987 ハイパーテキスト転送プロトコル(HTTP)ヘッダーフィールドパラメータの文字セットと言語エンコーディング」。
RFC2183 は、そのようなヘッダは、次のようにエンコードされるべきであることを示しています。 RFC2184 で廃止された RFC 2231 上記のRFCドラフトでカバーされています。
関連
-
Google Chrome用Webフロントエンド runtime.lastErrorのチェックが外れています。接続を確立できませんでした。受信側が存在しない
-
[解決済み] <meta http-equiv="X-UA-Compatible" content="IE=edge">は何をするのですか?
-
新バージョンのクロームでカメラとマイクをhttpプロトコルで呼び出せない問題を解決しました。
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み] Firefox または Chrome ブラウザから HTTP POST リクエストを手動で送信する方法
-
[解決済み] クエリ文字列の最大長を教えてください。
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
-
[解決済み] application/x-www-form-urlencoded or multipart/form-data?
-
[解決済み] CSSメディアクエリを使用してデバイスの向きを検出するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Google Chrome用Webフロントエンド runtime.lastErrorのチェックが外れています。接続を確立できませんでした。受信側が存在しない
-
Chrome 91でSameSite by defaultのクッキーが削除された後の解決策、クッキーを持ち運べないChromeのクロスドメインPOSTリクエストの解決策
-
新バージョンのクロームでカメラとマイクをhttpプロトコルで呼び出せない問題を解決しました。
-
[解決済み] クエリ文字列の最大長を教えてください。
-
[解決済み] HTTPのContent-Dispositionヘッダーのファイル名パラメータをエンコードする方法は?
-
[解決済み】Unicode、UTF、ASCII、ANSIのフォーマットの違いについて
-
[解決済み】Djangoにダウンロード可能なファイルを提供させる
-
[解決済み] CSSメディアクエリを使用してデバイスの向きを検出するには?