Heim >Backend-Entwicklung >PHP-Tutorial >Wie erhalte ich die Client-IP-Adresse in Laravel genau?

Wie erhalte ich die Client-IP-Adresse in Laravel genau?

Susan Sarandon
Susan SarandonOriginal
2024-10-20 08:32:31793Durchsuche

How to Get Client IP Address Accurately in Laravel?

Erhalten der Client-IP-Adresse in Laravel 5

Das Abrufen der IP-Adresse eines Clients in Laravel scheint mit $_SERVER["REMOTE_ADDR"] unkompliziert zu sein. Im Gegensatz zum Kern-PHP gibt Laravel jedoch die IP des Servers anstelle der des Besuchers zurück.

Um dieses Problem zu beheben, verwendet Laravel Request::ip(). Diese Methode nutzt das Request-Objekt von Symfony, um die IP-Adresse des Clients zu ermitteln.

Intern ruft Request::ip() getClientIps() auf, das einen robusten Ansatz zum Extrahieren der IP-Adresse des Clients verwendet. Es ruft zunächst die IP-Adresse des Servers (REMOTE_ADDR) ab und prüft, ob ein vertrauenswürdiger Proxy verwendet wird.

Wenn ein vertrauenswürdiger Proxy erkannt wird, werden die Anforderungsheader basierend auf der vertrauenswürdigen Header-Konfiguration von Laravel überprüft. Bestimmte Header wie X-Forwarded-For und X-Client-IP werden analysiert, um die IP-Adresse des Clients zu extrahieren.

Diese Header können jedoch unzuverlässig sein, insbesondere wenn sich der Client hinter mehreren Proxys befindet. Daher wird die IP-Adresse der Anfrage als letztes Element im Array $clientIps hinzugefügt.

Die IP-Adresse des Clients wird dann als erstes Element in $clientIps ausgewählt. Diese IP-Adresse kann die IP der Anfrage oder einer der vertrauenswürdigen Proxys sein.

Um die Genauigkeit sicherzustellen, wird jede IP-Adresse in $clientIps anhand einer Liste vertrauenswürdiger Proxys validiert. Wenn eine IP-Adresse zu einem vertrauenswürdigen Proxy gehört, wird sie aus dem Array entfernt.

Letztendlich gibt Request::ip() ein Array von IP-Adressen zurück. Das erste Element dieses Arrays stellt die nicht vertrauenswürdige Client-IP-Adresse dar, gefolgt von den IPs aller vertrauenswürdigen Proxys.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die Client-IP-Adresse in Laravel genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn