Почему request.getRemoteAddr () возвращает ipv4 или ipv6 в зависимости от контекста (запрос сообщения или запрос ajax)

У меня есть 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 формат?

спасибо

23
задан Jerome Cance 25 June 2010 в 14:31
поделиться

1 ответ

Причина в том, что имя, которое вы вводите в браузере, имеет адреса ipv4 и ipv6. Браузер выбирает использование ipv4, flash выбирает использование ipv6. На стороне сервера вы ничего не можете с этим поделать (нет возможности конвертировать).
Однако вы можете изменить свой DNS и сделать так, чтобы у вашего имени был только один адрес: ipv4 или ipv6. Вы также можете подключиться с помощью буквального IP-адреса (127.0.0.1), а не имени (localhost).

12
ответ дан 29 November 2019 в 01:16
поделиться
Другие вопросы по тегам:

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