如何解决Django 和 NGINX:如何向内部查看器提供受保护的媒体文件?
目前我保护我的媒体文件免受未经授权的访问,例如描述的here 具有以下配置:
媒体文件位于 /home/mysite/dproject/media/
...
location /protected/ {
internal;
alias ../mysite/dproject/media/;
}
...
在 urls.py 中,我将对 /media/
的请求重定向到访问被拒绝的视图:
urlpatterns = [
...
re_path(r'^media/',login_required(PermissiondeniedView.as_view()),name='directmediaaccessdenied')
]
在 settings.py
中设置了路径 MEDIA_URL
和 MEDIA_ROOT
:
MEDIA_ROOT = str(PROJ_DIR('media'))
MEDIA_URL = '/media/'
response = HttpResponse()
path = os.path.normcase( '/protected/' + filepath )
del response['Content-Type']
response['Content-disposition'] = 'attachment; filename="%s"' % path
response['x-accel-redirect'] = path
return response
到目前为止,一切都按预期工作,但我无法向嵌入的 PDF 或 3D 查看器提供数据。
例如,我使用查看器来显示 3D 文件(来源来自 here)。文件的路径通过哈希参数传递,因此带有嵌入式查看器的视图的有效 URL 如下所示:
https://mysite.mydomain.com/3Dview/#model=/protected/path/to/file.ext
使用上述配置,查看器无法加载文件。当我将 URL 更改为
时,查看器工作https://mysite.mydomain.com/3Dview/#model=/media/path/to/file.ext
和 Nginx 配置:
...
location /media/ {
alias ../mysite/dproject/media/;
}
...
非常感谢有关如何向嵌入式查看器提供受保护媒体文件的任何提示!
提问是一门我不掌握的艺术。因此,如果有什么需要澄清或信息缺失,请随时告诉我。
提前致谢并致以最诚挚的问候 克里斯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。