Laravel 5에서 클라이언트 IP 주소 얻기
$_SERVER["REMOTE_ADDR"]를 사용하면 Laravel에서 클라이언트 IP 주소를 얻는 것이 간단해 보일 수 있습니다. 그러나 핵심 PHP와 달리 Laravel은 방문자의 IP 대신 서버의 IP를 반환합니다.
이 문제를 해결하기 위해 Laravel은 Request::ip()를 사용합니다. 이 방법은 Symfony의 요청 개체를 활용하여 클라이언트의 IP 주소를 결정합니다.
내부적으로 Request::ip()는 클라이언트의 IP 주소를 추출하기 위해 강력한 접근 방식을 사용하는 getClientIps()를 호출합니다. 먼저 서버의 IP 주소(REMOTE_ADDR)를 가져와서 신뢰할 수 있는 프록시가 사용되는지 확인합니다.
신뢰할 수 있는 프록시가 감지되면 Laravel의 신뢰할 수 있는 헤더 구성을 기반으로 요청 헤더를 검사합니다. X-Forwarded-For 및 X-Client-IP와 같은 특정 헤더는 구문 분석되어 클라이언트의 IP 주소를 추출합니다.
그러나 이러한 헤더는 특히 클라이언트가 여러 프록시 뒤에 있는 경우 신뢰할 수 없을 수 있습니다. 따라서 요청의 IP 주소는 $clientIps 배열의 마지막 요소로 추가됩니다.
그런 다음 클라이언트의 IP 주소가 $clientIps의 첫 번째 요소로 선택됩니다. 이 IP 주소는 요청의 IP이거나 신뢰할 수 있는 프록시 중 하나일 수 있습니다.
정확성을 보장하기 위해 $clientIps의 각 IP 주소는 신뢰할 수 있는 프록시 목록과 비교하여 검증됩니다. IP 주소가 신뢰할 수 있는 프록시에 속하는 경우 배열에서 제거됩니다.
궁극적으로 Request::ip()는 IP 주소 배열을 반환합니다. 이 배열의 첫 번째 요소는 신뢰할 수 없는 클라이언트 IP 주소를 나타내고 그 뒤에는 신뢰할 수 있는 프록시의 IP가 표시됩니다.
위 내용은 Laravel에서 클라이언트 IP 주소를 정확하게 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!