#c# #asp.net
#c# #asp.net
Вопрос:
У меня есть страница, на которую поступает запрос с другого веб-сайта. Я хочу отслеживать IP-адрес, на который поступает запрос.
Я использую Asp.Net C # amp; использовал три метода
1) httpRequest.UserHostAddress
Пробовал переменные Http-сервера как
2) httpRequest.ServerVariables ["HTTP_X_FORWARDED_FOR"];
3) httpRequest.ServerVariables ["REMOTE_ADDR"];
Но эти методы возвращают мне адрес моего сервера. Поскольку браузер принимает этот запрос так, как он был создан на моем конце. Но я хочу получить IP-адрес страницы (сайта), откуда поступает запрос. Может ли кто-нибудь помочь мне в этом.
Комментарии:
1. спасибо за исправление SKK
2. Можете ли вы объяснить свой контекст? Ваши пользователи нажимают на ссылку или вы делаете перенаправление? куда вы перенаправляете? Спасибо…
3. да, запрос извне, скажем, Paypal, приходит на мою страницу mysite.com/test.aspx теперь я хочу отследить ip-адрес Pay-Pal , который инициировал этот запрос на мой сайт
Ответ №1:
Возможно, вы ищете свойства ссылки на URL.
Попробуйте
Request.UrlReferrer
Или
Request.ServerVariables["http_referer"]
При этом вы получаете URL-адрес, с которого поступает запрос.
Комментарии:
1. Это дает хост, а не IP-адреса.
2. 2GDev: На самом деле, когда я попытался запросить. UrlRefferrer возвращает значение null
3. @FarooqAhmed Убедитесь, что у вас нет настроек (настроек браузера или прокси-сервера), которые лишают referrer конфиденциальности. Если вы это сделаете, то это будет выглядеть так же, как если бы вы перешли на страницу напрямую.
Ответ №2:
private IPAddress[] PossibleReferringIPs
{
get
{
Uri refer = Request.UrlReferrer;
if(refer == null)
return null;
string host = refer.Host;
IPAddress hostAsIP;
if(IPAddress.TryParse(host, out hostAsIP))// had actual IP address as host part of URI
return new IPAddress[]{hostAsIP};
return Dns.GetHostAddresses(host);//This can throw SocketException which you may wish to catch at this point.
}
}
Мы не можем гарантировать, что реферер установлен вообще, даже если реферер был, и если домену назначено более одного IP-адреса, мы не можем знать, какой из них обслуживал страницу, поскольку между этим сервером и вашим сервером нет соединения, эта информация недоступна.
Комментарии:
1. Когда я попробовал ваше решение, оно вернуло значение null, потому что объект Referrer равен null
2. моя цель опубликовать этот вопрос по-прежнему без ответа, как получить IP-адрес поступающего запроса
3. Если referrer имеет значение null, то либо у вас нет реферера (например, вы переходите непосредственно на страницу или из закладки, ссылки в электронном письме и т. Д.), Либо пользователь проходит через прокси, который удаляет поле referrer . В любом из этих случаев вы ничего не можете сделать.
Ответ №3:
Вы пробовали
httpRequest.UrlReferrer.Host
?