У меня есть donne веб-приложение с Spring/GWT, который использует Flash для загрузки файлов.
Когда я отправляю ajax запрос с GWT и пытаюсь получить пользовательский IP-адрес, я получаю адрес ipv4 как: 127.0.0.1
но когда я загружаю свои файлы с флэш-памятью (и так запрос сообщения на том же веб-приложении), я получаю адрес ipv6 0:0:0:0:0:0:0:1
Я использую тот же код для получения пользовательского IP, который является:
ServletRequestAttributes att = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
att.getRequest().getRemoteAddr();
Проблема состоит в том, что я использую подпись, которая использует IP-адрес, чтобы быть уверенной, что пользователь может загрузить файлы (из-за ошибки с сессией, проигранной при загрузке с флэш-памятью) и изменения IP-адреса, когда я использую ajax или Сообщение через флэш-память.
Какова проблема и как я могу получить тот же IP формат?
спасибо
Причина в том, что имя, которое вы вводите в браузере, имеет адреса ipv4 и ipv6. Браузер выбирает использование ipv4, flash выбирает использование ipv6. На стороне сервера вы ничего не можете с этим поделать (нет возможности конвертировать).
Однако вы можете изменить свой DNS и сделать так, чтобы у вашего имени был только один адрес: ipv4 или ipv6. Вы также можете подключиться с помощью буквального IP-адреса (127.0.0.1), а не имени (localhost).