nginxのX-Accel-Redirect
ヘッダーを使用して、特定の機密ファイルを公開ダウンロードから保護するビューがあります。私のURLは次のようになります。Django:特定のURLのAPPEND_SLASHを無効にする
url(r'^dl/f/(?P<pk>\d+)/(?P<filename>[^/]+)$', 'file_download.views.download', name='download-filename'),
pk
filename
は、スラッシュ以外のものと一致する、ファイル名で、データベース内のファイルオブジェクトの主キーです。主に、ブラウザがファイル名を知っているので、ユーザが保存したい場合に備えています。ターミナルスラッシュはありません。
ブラウザで一致するURLを開くと、Djangoは同じURLにスラッシュを追加してリダイレクトします。ファイルはブラウザ(PDF)に表示されますが、保存する場合は、ファイル名の代わりに一般的な「download.pdf」が表示されます。
一般的なケースではAPPEND_SLASH
を無効にしたくないのですが、この1つのケースで何とか回避できますか?
編集:残念ながら、Content-Disposition: attachment
ヘッダーは使用できません。他のすべてのファイルもそのヘッダーなしで配信されるため、保護されたファイルと保護されていないファイルの一貫した動作が必要です。
私は非保護されたファイルも、それなしで提供していますので、私は、 'コンテンツDisposition'ヘッダーを使用しないことを言及している必要があり、クライアントは(当然)一貫性のある行動を望んでいます。 また、「PDF内のファイルだけでなく、すべての種類のファイルが表示されるため、「extension-in-url-pattern」は私にとってはうまく機能しません。 –
?これは、クライアント(ブラウザ)にファイルをダウンロードするように通知するヘッダーです。ダウンロードを強制するのではなく、ブラウザに表示したいと言っていますか? –
はい。ヘッダーがないと、ファイルタイプをサポートするブラウザは、ダウンロードする代わりに「インライン」を開きます。 ChromeのPDF私はその行動を維持したい。 'Content-Disposition'を' attachment'に設定すると、ブラウザがファイルをネイティブに表示できるかどうかに関係なく、ダウンロードダイアログが表示されます。 –