Dalam senario tertentu, adalah perlu untuk menghalang akses terus kepada fail yang boleh dimuat turun di tapak web. Django menyediakan mekanisme untuk menyampaikan fail sambil mengekalkan keselamatan dengan menyembunyikan laluan mereka daripada pengguna.
Satu pendekatan ialah menjana laluan tersembunyi secara manual untuk setiap fail dengan menggabungkan rentetan rawak atau cap waktu dengan laluan sebenar. Laluan yang dijana kemudiannya boleh digunakan dalam URL muat turun, yang memajukan ke pelayan. Ini memastikan pengguna tidak boleh mengakses fail dengan meneka atau memanipulasi URL.
Walau bagaimanapun, kaedah ini melibatkan pembangunan dan konfigurasi tambahan, menjadikannya kurang cekap. Untuk penyelesaian yang lebih diperkemas, pertimbangkan perkara berikut:
Menggunakan X-Sendfile atau X-Accel-Redirect:
Mengintegrasikan X-Sendfile atau X-Accel-Redirect modul dengan Apache atau Nginx membolehkan Django menyampaikan fail yang disimpan pada pelayan dengan lancar tanpa memerlukan logik aplikasi tambahan. Apache menggunakan pengepala X-Sendfile, manakala Nginx menggunakan X-Accel-Redirect. Dengan menetapkan pengepala ini dalam respons HTTP, pelayan akan mendapatkan semula fail secara terus dan menghantarnya kepada pengguna.
Untuk melaksanakan kaedah ini:
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
Dengan menggunakan pendekatan ini, Django boleh menyampaikan fail yang boleh dimuat turun dengan berkesan sambil mengekalkan keselamatan serta menjimatkan masa dan usaha dalam pembangunan.
Atas ialah kandungan terperinci Bagaimana untuk Melayan Fail Boleh Muat Turun dengan Selamat di Django dengan Mengaburkan Laluan Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!