最近想到
python 的 django 要如何取得使用者 瀏覽者的 IP 位置?
主要是在 view 中執行
要有 request 這個物件
def your_view(request): # 從 header 嘗試獲取 x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') # 有的話就取逗點前第一串字串 if x_forwarded_for: user_ip = x_forwarded_for.split(',')[0] # 沒有則用 REMOTE_ADDR 取得 else: user_ip = request.META.get('REMOTE_ADDR') return HttpResponse(f"用户的IP地址是:{user_ip}")
這兩個差異解釋:
HTTP_X_FORWARDED_FOR:
這是一個用於標識客戶端原始IP地址的HTTP頭部字段。
如果客戶端通過代理或負載均衡器連接到服務器,那麽 HTTP_X_FORWARDED_FOR 通常包含了客戶端的原始IP地址列表。
這個列表中的第一個IP地址是最初的客戶端IP,後續的IP地址是經過的代理服務器的IP地址,以逗號分隔。
REMOTE_ADDR:
REMOTE_ADDR 是HTTP請求的環境變量,用於標識直接連接到服務器的客戶端的IP地址。
它僅提供了最後一個連接到服務器的代理或客戶端的IP地址,而不提供之前的代理地址。如果有多層代理,REMOTE_ADDR 只包含了最後一個代理服務器的IP地址。
給大家參考囉
留言板
歡迎留下建議與分享!希望一起交流!感恩!