У меня есть представление, которое защищает определенные конфиденциальные файлы от публичной загрузки, используя заголовок nginx 'X-Accel-Redirect
. Мой URL выглядит так:
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
для общего случая, но могу ли я как-то обойти это для этого единственного случая?
/ edit: к сожалению, я не могу использовать заголовок Content-Disposition: attachment
, поскольку все остальные файлы также обслуживаются без этого заголовка, и требуется согласованное поведение как для защищенных, так и незащищенных файлов.