Захват IP-адреса из формы - PullRequest
0 голосов
/ 04 октября 2019

У меня есть форма rails, и я пытаюсь захватить IP-адрес клиента и в конечном итоге преобразовать его в почтовый индекс. Я сделал следующее:

Контроллер

def create

  ...

  begin
    response = open('https://jsonip.com/').read
    data = JSON.parse(response)
    ip_address = data['ip']
    ip_type = 'jsonip'
  rescue
    ip_type = 'request.remote_ip'
    ip_address = request.remote_ip
  end

  if ip_address
    zip = Geocoder.search(ip_address)
    p "IP Address (#{ip_type}): #{ip_address}, zip: #{zip}"
    @potential_client.zip_code = zip.first.try(:postal) if zip.present?
  end

  ...

end

Этот код пришел от здесь , потому что request.remote_ip продолжал возвращать тот же IP-адрес,Казалось, что это работает, но как только я нажимаю на Heroku, кажется, что все все еще приходят с одного IP-адреса.

Что еще мне не хватает?

1 Ответ

1 голос
/ 04 октября 2019

При вызове jsonip.com ваш сервер рендерит и запрашивает эту страницу, поэтому имеет смысл вернуть IP-адрес сервера.

При использовании Heroku и других поставщиков SaaS удаленный IP возвращает IP-адрессервера или балансировщик нагрузки. Heroku предоставляет заголовок «x-forwarded-for», в котором есть список IP-адресов, через которые прошел запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...