2008-11-04 4 views
6

자바 서블릿으로 웹 앱을 개발 중이며 processRequest(HttpServletRequest request,HttpServletResponse response)에서 request.getRemoteAddr()으로 전화하여 사용자의 IP 정보를 얻으려고합니다.HttpServletRequest.getRemoteAddr()이 Java 서블릿에서 작동하지 않는 이유는 무엇입니까?

하지만 잘못된 IP를 반환합니다.

 
RemoteAddr : 127.0.0.1 
RemoteHost : 127.0.0.1 
x-forwarded-for : null 

127.0.0.1 내 IP되지 않습니다 : 내가이 지역에 대해 매우 지식이 아니에요 이후, 나는 그것이 어쩌면 프록시를 표시 모르는,이 있어요.

아직까지 : http://www.javascriptkit.com/script/script2/displayip.shtml 서블릿을 사용하고 있기 때문에 오른쪽에 표시됩니다. 동적으로 생성 된 HTML 페이지에 .shtml이 없습니다. 어떻게해야합니까? 그리고 그 사이트의 스크립트가 올바르게 표시 할 수없는 이유는 무엇입니까? request.getRemoteAddr()은 그럴 수 없습니까?

모든 해답을 제공해 주셔서 감사합니다. 서버에 배포 한 후 예상대로 작동하는 단서가 있습니다. 올바른 주소를 표시했습니다.

하지만 로컬 컴퓨터에서 개발할 때 실제 서버에서 실행되는 것처럼 절대 IP를 표시하도록 요청하는 방법은 무엇입니까? 아니면 할 수 있습니까?

+0

'wrong ip'라고 말하면 도메인 내의 주소는 무엇입니까? 얼마나 틀렸어? 우리는 전화가 돌아 오는 것에 대해 더 많은 정보를 주실 수 있습니까? –

답변

19

표시 할 IP 주소는 무엇입니까? 내 생각에 프록시 나 무언가 변화하는 것이 있습니다. (예를 들어, 스크립트 페이지에 내 LAN에있는 것이 아니라 내 LAN에있는 ADSL 라우터의 IP 주소가 표시되었습니다.)

EDIT : 이제 보았던 IP 주소가 127.0.0.1 인 것으로 나타났습니다. 그 답은 매우 분명합니다 - 루프백 어댑터 (즉, 같은 머신에 대한 바로 가기)가 여러분이 개발중인 동일한 머신에서 테스트하고 있기 때문에 볼 수 있습니다. 대답은 전적으로 정확합니다.

다른 컴퓨터에서 시도해 보면 더 유용한 IP 주소를 얻을 수 있습니다.

+0

그건 내 질문이기도했다. 방금 더 빨리 입력했습니다. :) – Herms

4

request.getHeader ("X-Forwarded-For")를 호출하여 X-Forwarded-For 헤더를 확인하고 반환되는 IP를 확인합니다.

+0

우리는이 헤더를 사용하고 있지 않다면 request.getRemoteAddr() – singhspk

3

표시되는 반환 된 IP는 로컬 호스트 IP입니다. 이것은 질문을 제기합니다 - 테스트 할 곳은 어디이고 테스트를 위해 서블릿에 액세스하는 방법은 무엇입니까?

로컬 (개발) 시스템에서 서블릿을 실행하고 동일한 시스템의 브라우저에서 서블릿을 호출하는 경우이 출력은 정확합니다.

건배,

-R

1

당신은 로컬 컴퓨터에서 테스트 서버를 실행하고 http://localhost/에 연결하고 있습니다. 로컬 인터페이스에 연결 중이므로 연결 소스도 localhost (별칭 : 127.0.0.1)입니다.

관련 문제