Request.ServerVariables("REMOTE_ADDR") извлекает один и тот же IP-адрес для нескольких входов в систему внутри и за пределами моей компании.

Меня попросили написать код для отслеживания IP-адресов посетителей одного из онлайн-приложений моей компании в.NET. На самом деле это второй, который я сделал, сделав еще один сайт в конце прошлого года. Я заметил тогда и снова сейчас, что иногда я получаю один и тот же IP-адрес, потому что я знаю, что это еще одна коробка... иногда коллега, а иногда и коробка, даже не в этом здании. Код довольно прост, вот как я получаю адрес:

Dim IPAddress As String = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If IPAddress = "" Then IPAddress = Request.ServerVariables("REMOTE_ADDR")

Я регистрирую результаты в базе данных при входе пользователей в систему. Мое тестирование этим утром на моей машине разработки, конечно, дало 127.0.0.1..... отлично, как я и ожидал. Когда я развернул код на нашем промежуточном сервере, я получил свой фактический IP-адрес (я видел его достаточно, чтобы узнать его, когда увижу). Все хорошо..... но затем сотрудник нашей группы QA пошел на некоторое тестирование, и МОЙ IP-адрес был зарегистрирован в базе данных. Я с уверенностью знаю, что мы не разделяем этот адрес.

Я также помню, что видел это во время моего первого развертывания, когда транзакции от клиентов из разных штатов США регистрировались с моим IP-адресом. Я не вижу вещей..... может кто-нибудь сказать мне, как это происходит? Это похоже на то, что заголовок транзакции кэшируется, и последующие вызовы не получают информацию о новом пользователе.

Есть идеи? Спасибо!

1 ответ

Решение

Скорее всего, вы видите IP-адрес маршрутизатора. Лучший способ отследить пользователей в веб-приложении - использовать куки для их маркировки. [Это похоже на пометку дикого животного в лесу.] Затем вы можете использовать идентификатор в файле cookie, чтобы идентифицировать его при повторных посещениях.

Другие вопросы по тегам