> 백엔드 개발 > PHP 튜토리얼 > Laravel에서 클라이언트 IP 주소를 정확하게 얻는 방법은 무엇입니까?

Laravel에서 클라이언트 IP 주소를 정확하게 얻는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-20 08:32:31
원래의
795명이 탐색했습니다.

How to Get Client IP Address Accurately in Laravel?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿