Почему HttpServletRequest.getRemoteAddr () не работает в сервлете Java? [дубликат]

Причина, по которой вы не можете просто заменить _.includes на _.without, заключается в том, что они не являются противоположностью друг другу. Общим для них является то, что первый аргумент, который они принимают, может быть массивом (который вы используете для него). Но на этом сходство заканчивается; они совершенно разные:

  • _.includes возвращает логическое значение , указывающее, встречается ли второй аргумент в массиве

  • _.without возвращает массив , который включает значения в исходном массиве, за исключением второго аргумента (и других значений аргумента, если они предоставлены).

Поскольку массив всегда является истинным значением, функция _.conform - когда она основана на _.without - всегда будет возвращать true.

Вместо _.without создайте реальную противоположность _.includes с помощью _.negate:

this.filters[this.columnName] = _.partial(_.negate(_.includes), this.tempQuery);

Я полагаю, что вы не хотите касаться использования _.filter, но так же, как В качестве альтернативы вы также можете отрицать это с помощью _.reject.

6
задан Frank 29 October 2011 в 00:40
поделиться

5 ответов

Проверьте заголовок X-Forwarded-For путем вызова request.getHeader ("X-Forwarded-For") и посмотрите то, что делает IP он возвращается.

4
ответ дан 8 December 2019 в 03:28
поделиться

Какой IP-адрес это отображает? Мое предположение существует некоторый прокси или что-то изменяющее вещи. (Например, та страница сценария отобразила мой IP-адрес маршрутизатора ADSL - не одну внутреннюю часть моя LAN - по очевидным причинам.)

Править: Теперь, когда Вы показали, что IP-адрес, который Вы видите, 127.0.0.1, ответ является довольно четким - Вы видите свой петлевой адаптер (т.е. ярлык на ту же машину), по-видимому, потому что Вы тестируете на той же машине, на которой Вы разрабатываете. Ответ совершенно корректен.

Попробуйте его от другой машины, и Вы получите более полезный IP-адрес.

19
ответ дан 8 December 2019 в 03:28
поделиться

Возвращенный IP, который Вы показываете, является localhost IP. Это поднимает вопрос - где Вы тестируете, и как Вы получаете доступ к сервлету для тестирования?

Если Вы выполняете сервлет на своем локальном (разработка) машина и также звоните ему от браузера на той же машине, то этот вывод абсолютно корректен.

Удачи,

- R

4
ответ дан 8 December 2019 в 03:28
поделиться

Вы выполняете свой тестовый сервер на Вашем локальном компьютере и соединяетесь с ним на http://localhost/. Так как Вы соединяетесь в локальном интерфейсе, источник соединения также localhost, иначе 127.0.0.1.

1
ответ дан 8 December 2019 в 03:28
поделиться

При вызове сервлета с помощью http://localhost:8080/servlet Вы будете обычно получать "localhost" как удаленный addr. При использовании названия машины, т.е. http://yourmachine/servlet Вы usally получите "корректный" адрес.

1
ответ дан 8 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: