Django는 어떻게 X-Sendfile(또는 X-Accel-Redirect)을 사용하여 다운로드 가능한 파일을 안전하게 제공할 수 있나요?

Barbara Streisand
풀어 주다: 2024-11-20 13:52:14
원래의
886명이 탐색했습니다.

How Can Django Securely Serve Downloadable Files Using X-Sendfile (or X-Accel-Redirect)?

Django를 사용하여 다운로드 가능한 파일 제공

웹사이트 사용자는 파일을 다운로드할 수 있는 기능이 필요한 경우가 많지만, 파일을 보호하고 직접 다운로드를 방지하는 것은 중대한. 한 가지 해결책은 사용자가 파일에 직접 액세스할 수 없도록 파일 경로를 모호하게 만드는 것입니다.

이를 달성하려면 다음과 같은 매개변수가 포함된 URL을 생성하세요.

http://example.com/download/?f=somefile.txt
로그인 후 복사

다운로드 가능한 파일이 있다고 가정해 보겠습니다. /home/user/files/ 폴더에 있습니다. Django는 파일을 표시하기 위해 특정 URL 및 View가 필요 없이 다운로드할 파일을 제공하도록 구성할 수 있습니다.

X-Sendfile 모듈이 최적의 솔루션을 제공합니다. 이를 통해 Django는 파일을 찾고 헤더를 지정할 수 있으며, 실제 파일 제공은 웹 서버(예: Apache, Lighttpd)에서 처리됩니다. mod_xsendfile을 설치하고 구성한 후 보기와 통합하세요.

from django.utils.encoding import smart_str

response = HttpResponse(content_type='application/force-download') 
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
response['X-Sendfile'] = smart_str(path_to_file)
return response
로그인 후 복사

이 접근 방식을 사용하려면 mod_xsendfile을 지원하는 서버 제어 또는 호스팅 회사가 필요합니다.

추가 고려 사항:

  • nginx 서버의 경우 X-Sendfile 대신 X-Accel-Redirect를 사용하세요.
  • Django 1.7 이상에서는 mimetype 대신 content_type을 사용하세요.
  • 성능 향상을 위해 'Content-Length' 헤더를 설정하는 것이 좋습니다.

위 내용은 Django는 어떻게 X-Sendfile(또는 X-Accel-Redirect)을 사용하여 다운로드 가능한 파일을 안전하게 제공할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿