Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana Cara Mendapatkan Alamat IP Pengguna dengan Tepat di Django dengan Proksi Terbalik?

Bagaimana Cara Mendapatkan Alamat IP Pengguna dengan Tepat di Django dengan Proksi Terbalik?

DDD
Lepaskan: 2024-11-05 08:08:02
asal
452 orang telah melayarinya

How to Accurately Obtain a User's IP Address in Django with Reverse Proxies?

Django: Mendapatkan Alamat IP Pengguna

Masalah:

Anda menghadapi KeyError semasa cuba mendapatkan semula alamat IP pengguna menggunakan permintaan.META['REMOTE_ADDR'].

Analisis:

Alamat jauh dikembalikan melalui permintaan.META['REMOTE_ADDR'] mungkin bukan IP pengguna sebenar jika proksi terbalik terlibat.

Penyelesaian:

Untuk mendapatkan alamat IP pengguna dengan tepat, ikut langkah berikut:

  1. Tentukan a fungsi utiliti untuk mendapatkan semula IP klien:
<code class="python">def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[0]
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip</code>
Salin selepas log masuk
  1. Ganti kod anda sebelum ini dengan:
<code class="python">client_ip = get_client_ip(request)</code>
Salin selepas log masuk

Pertimbangan:

  • Pastikan proksi terbalik anda (cth., mod_rpaf untuk Apache) dikonfigurasikan dengan betul.
  • Gunakan item first dalam X-Forwarded-For untuk kebanyakan kes.
  • Awas: Dalam persediaan tertentu (cth. Heroku), anda mungkin perlu menggunakan item terakhir sebagai ganti.
  • Untuk mendapatkan HttpRequest.META dokumentasi dalam Django, rujuk dokumentasi rasmi.

Atas ialah kandungan terperinci Bagaimana Cara Mendapatkan Alamat IP Pengguna dengan Tepat di Django dengan Proksi Terbalik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan