Почему request.environ.get(‘HTTP_X_FORWARDED_FOR’, запрос.remote_addr) иногда не возвращает правильный адрес?

#python-3.x #flask #repl.it

#python-3.x #flask #repl.it

Вопрос:

У меня есть веб-страница на основе flask, запущенная на repl.it . На указанном веб-сайте у меня есть форма, которая использует post для отправки данных на страницу сайта.

На этой странице у меня есть следующий код python:

 b = request.environ.get('HTTP_X_FORWARDED_FOR', request.remote_addr)
  

который должен возвращать (clientip, proxy1, proxy2), как и на любой другой странице веб-сайта, на котором я его использую, однако он просто возвращает только proxy2. Я просмотрел request.envrion и IP-адрес клиента вообще не встречается. Почему это? Почему это работает на других страницах сайта, но не здесь?

Как мне получить request.envrion указание IP-адреса клиента на этой странице? Есть ли какая-то альтернатива request.envrion , которую я могу использовать для получения IP-адреса клиента?

Ответ №1:

Вы можете попробовать это:

 headers_list = request.headers.getlist("HTTP_X_FORWARDED_FOR")
http_x_real_ip = request.environ.get('HTTP_X_REAL_IP', request.remote_addr)

ip_address = headers_list[0] if headers_list else http_x_real_ip