2016-05-09 6 views
0

クロムからファイルを一重引用符でダウンロードすると、ファイルがダウンロードされますが、URLの名前がダウンロードされます。ファイル名から一重引用符を削除すると、ファイルは正常にダウンロードされます。これはChromeでのみ発生します。 Internet ExplorerとFirefoxは正常に動作します。filename HTTPヘッダーを処理する際にChromeに問題がありますか?

クロームバージョン50.0.2661.94メートル

HTTPリクエスト

Request URL:http://server/Service.do?csrfToken=abcd 
Content-Disposition:attachment; filename*=UTF-8''Lettre%20d'exp%C3%A9rience.rtf 

これは名前 "Service.do" でファイルをダウンロードしようとします。名前の一引用符を削除すると、正しい名前のファイルをダウンロードするように求められます。

回避策はありますか? (ファイル名を変更する以外)

答えて

2

名前にその一重引用符をパーセントエンコードする必要があります。

Content-Disposition: attachment; filename*=UTF-8''Lettre%20d%27exp%C3%A9rience.rtf 

また、RFC 6266 Appendix Dはあなたがfilename*を実装していないことがあり、古いユーザーエージェントのためのASCIIのみフォールバックとして平野filenameパラメータを追加することをお勧めします:

Content-Disposition: attachment; filename="Lettre d'experience.rtf"; filename*=UTF-8''Lettre%20d%27exp%C3%A9rience.rtf 
+0

しかし、これが唯一のChromeで問題です。これはChromeのバグと見なすことができますか?それとも、単にブラウザがRFCを実装していないということですか?これはChromeでは発生していますが、Firefoxでは発生していないのは奇妙です。 –

+0

@ GabrielEspinelその単一引用符をエンコードしないままにしておくと、[RFC](https://tools.ietf.org/html/rfc5987)に違反することになります。だから、Firefoxはあなたのミスに寛大です(https://en.wikipedia.org/wiki/Robustness_principle)。 –

+0

私は参照してください。意味がある。ありがとう –

関連する問題