2017-03-11 2 views
0

액세스 로그에 대한 클라이언트 시스템 정보를 얻으려고합니다. ASP.NET/C#에서 클라이언트 장치 이름과 IP 주소를 얻는 방법?ASP.NET/C#에서 클라이언트 장치 정보를 얻는 방법?

+1

사용자의 공용 IP 주소를 얻는 방법에 대한이 게시물을 확인하십시오 : http://stackoverflow.com/a/19286308/3126771. "클라이언트 장치"가 의미하는 바는 무엇입니까? 브라우저 요원 얘기하고 있니? – Arun

답변

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 프로토콜에 내장 된 개념이 없으므로 클라이언트가 검색 할 수 있도록하려면 사용자 지정 헤더 또는 매개 변수를 사용하여 클라이언트에 제공해야 할 수도 있습니다 그것 서버에.