Является ли удаленный адрес таким же, как x-forwarded-for?

#spring-boot #http #request #header #x-forwarded-for

#весенняя загрузка #http #запрос #заголовок #x-forwarded-for

Вопрос:

Мне нужно получить заголовок x-forwarded-for из запросов. Поскольку у меня уже есть http-фильтр, я могу легко регистрировать удаленный адрес с помощью HttpServletRequest.getRemoteAddr() , тогда как для регистрации x-forwarded-for потребуется дополнительная настройка. Мой вопрос в том, будет ли HttpServletRequest.getRemoteAddr() возвращать тот же адрес, что и x-forwarded-for, совпадают ли x-forwarded-for и удаленный адрес?

Ответ №1:

Нет, HttpServletRequest.getRemoteAddr() вернет адрес последнего прокси или балансировщика нагрузки, через который был отправлен запрос. X-Forwarded-For вернет исходный адрес, с которого был впервые отправлен запрос, за которым следует адрес прокси или балансировщика нагрузки.

Комментарии:

1. Вы также могли бы использовать что-то вроде Tomcat RemoteIpValve ( tomcat.apache.org/tomcat-8.5-doc/api/org/apache/catalina/valves / … ), который делает это для вас (т. Е. Возвращает X-Forwarded-For значение заголовка из request.getRemoteAddr()