2012-03-07 4 views
1

나는 비슷한 질문을했지만, 얼마 전에 질문을 받았다. 그래서 나는 새로운 글을 시작할 것이다. 이를 사용하여 내가 Grails의에서 IP 주소를 얻으려고Grails에서 IP 주소 받기

는 : 나는 고립 요청 방법 중 하나를 사용하는 경우 잘 작동

def String ipAddress ; 

ipAddress = request.getHeader("Client-IP") 

if (ipAddress == "") 
request.getHeader("X-Forwarded-For") 

if (ipAddress == "") 
request.getRemoteAddr() 

그러나 두 번째는 내가 요청 방법 I에 액세스 자바 해시 맵 오류가 발생합니다. 예 :

if this map contains a mapping from a key 
* {@code k} to a value {@code v} such that {@code (key==null ? k==null : 
* key.equals(k))}, then this method returns {@code v}; otherwise 
* it returns {@code null}. (There can be at most one such mapping.) 

의견을 보내 주시면 감사하겠습니다.

+0

'request.remoteHost'를 사용해 보셨나요? –

+0

이 오류를 어떻게 수정 하였습니까? 해당 속성 없음 : 요청 하시겠습니까? 요청 패키지/종속성은 어떻게 가져 옵니까? 이 오류를 인터넷 검색 도움이되지 않았다. –

+0

코드가 올바르게 보이지 않거나, def 문자열이 def 또는 String이어야하며, 변수 ipAddress = request.get을 할당해야합니다. –

답변

1

마리우스, 나는 컨트롤러 액션에 넣어 코드는 몇 가지 작은 변화를 만들어 가고 출력을 얻을 :

null 
null 
0:0:0:0:0:0:0:1 

코드 :

 def ipAddress = request.getHeader("Client-IP") 
     log.info ipAddress 
     if (!ipAddress) 
      log.info request.getHeader("X-Forwarded-For") 

     if (!ipAddress) 
      log.info request.remoteAddr 

나는 변화가 자기 바랍니다 설명?

+0

안녕하세요, Steve 여러분의 신속한 반응에 감사드립니다. 성공하지 못한 채 제공 한 코드를 사용해 보았습니다. 충돌하지는 않지만 두 번째로 요청 객체에 액세스 할 때 (디버그 모드에있을 때) Reference.jave 파일로 이동 한 다음 나머지 코드는 건너 뜁니다. 나는 Grails 2.01을 사용하고있다. – marius

+1

흠. 어디에서 이걸 돌리고 있니? 컨트롤러 등? 또한 빌드 정리를 시도해 때때로 "wierdness"를 제거합니다 – Steve

+0

이 코드는 나를 구해 줬습니다. 잘됐다! – JavaDev

0

나는 다음에 코드를 업데이트 할 :

def ipAddress = request.getHeader("Client-IP") 
    log.info ipAddress 
    if (!ipAddress){ 
     ipAddress=request.getHeader("X-Forwarded-For") 
     log.info "Used X-Forwarded-For header: $ipAddress" 
    } 
    if (!ipAddress){ 
     ipAddress=request.remoteAddr 
     log.info "Used RemoteAddr attribute: $ipAddress" 
    } 

그렇지 않으면 마지막 조건이 잘못된 행동으로 이어질 것입니다.