Получить IP-адрес в Grails - PullRequest
       0

Получить IP-адрес в Grails

2 голосов
/ 08 марта 2012

Я знаю, что подобные вопросы задавались, но все они были заданы некоторое время назад, поэтому я начну новую тему.

Я пытаюсь получить IP-адрес в граалях, используя это:

def String ipAddress ;

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

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

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

Если я использую какой-либо из методов запроса в отдельности, он работает нормально, однако во второй раз, когда я получаю доступ к методу запроса, я получаю ошибку хэш-карты Java, например:

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.)

Любые предложениябудет оценена.

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Мариус, я взял твой код, сделал несколько небольших изменений, вставил его в действие контроллера и получил вывод:

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 голосов
/ 24 мая 2017

Я хотел бы обновить код до следующего:

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"
    }

В противном случае последнее условие приведет к некорректному поведению.

...