액세스 로그에 대한 클라이언트 시스템 정보를 얻으려고합니다. ASP.NET/C#에서 클라이언트 장치 이름과 IP 주소를 얻는 방법?ASP.NET/C#에서 클라이언트 장치 정보를 얻는 방법?
0
A
답변
2
당신은 Request.UserHostAddress
속성에서 직접 클라이언트 IP를 얻을 수 있습니다 :
public ActionResult Index()
{
string ip = Request.UserHostAddress;
...
}
이 충분하지 않을 수 있습니다 많은 상황이 있습니다. 예를 들어 웹 서버가 nginx 또는 HAProxy와 같은 역방향 프록시 뒤에 있다고 가정합니다. 이 경우 UserHostAddress
은 항상이 프록시의 IP를 반환합니다. 당신은 그 역방향 프록시 서버를 설정할 수 있습니다 당신이 표준 X-Forwarded-For
요청 헤더를 사용할 수있는이 상황에서 원래 클라이언트의 IP 주소를 얻고 싶은 경우에 :
string ip = Request.Headers["X-Forwarded-For"];
또한주의를 그 요청이 많은 프록시 서버를 통해가는 경우, 당신은 당신이 다음 클라이언트에 가장 가까운거나 같은 IP 주소를 얻으려면
X-Forwarded-For: client, proxy1, proxy2
당신은이 상황을 설명해야하고 있습니다 X-Forwarded-For
헤더는 각 프록시 서버의 IP 주소의 쉼표로 구분 된 목록을 나타냅니다 이 목록에서 가장 왼쪽 주소를 추출해야합니다.
"클라이언트 장치 이름"에 관한 한 TCP/HTTP 프로토콜에 내장 된 개념이 없으므로 클라이언트가 검색 할 수 있도록하려면 사용자 지정 헤더 또는 매개 변수를 사용하여 클라이언트에 제공해야 할 수도 있습니다 그것 서버에.
사용자의 공용 IP 주소를 얻는 방법에 대한이 게시물을 확인하십시오 : http://stackoverflow.com/a/19286308/3126771. "클라이언트 장치"가 의미하는 바는 무엇입니까? 브라우저 요원 얘기하고 있니? – Arun