Uzyskanie Referrera HTTP w ASP.NET
Szukam szybkiego, łatwego i niezawodnego sposobu na uzyskanie http Referrer w ASP.Net ( C # ). Wiem, że sam Referrer HTTP jest zawodny, ale chcę niezawodnego sposobu uzyskania referrera, Jeśli jest obecny.
8 answers
Możesz użyć właściwości UrlReferrer bieżącego żądania:
Request.UrlReferrer
Spowoduje to odczytanie nagłówka HTTPReferer z żądania, które może lub nie musi być dostarczone przez Klienta (user agent).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-23 16:28:36
Użyj właściwości Request.UrlReferrer
.
Pod scenami jest tylko sprawdzanie właściwości ServerVariables("HTTP_REFERER")
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-07 13:29:14
W ten sposób: HttpRequest.Urlreferrer Property
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-09 10:41:16
Request.Headers["Referer"]
Wyjaśnienie
Request.UrlReferer
rzuci System.UriFormatException
, jeśli nagłówek HTTP referera jest zniekształcony(co może się zdarzyć, ponieważ zwykle nie jest pod twoją kontrolą).
Jeśli chodzi o użycie Request.ServerVariables
, na MSDN:
Prośba.ServerVariables Collection
Kolekcja ServerVariables pobiera wartości wcześniej określonych zmiennych środowiskowych i informacji nagłówka żądania.
Prośba.Headers Property
Pobiera kolekcję nagłówków HTTP.
Request.Headers
jest lepszym Wyborem niż Request.ServerVariables
, ponieważ Request.ServerVariables
zawiera wszystkie zmienne środowiskowe, a także nagłówki, gdzie Request.Headers
jest znacznie krótszą listą zawierającą tylko nagłówki.
Więc najlepszym rozwiązaniem jest użycie kolekcji Request.Headers
do bezpośredniego odczytu wartości. Uważaj jednak na ostrzeżenia Microsoftu o kodowaniu HTML wartości, jeśli zamierzasz ją wyświetlić w formularzu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-16 14:53:16
Ponieważ Google zabiera cię do tego postu podczas wyszukiwania C# Web API Referrer
oto umowa: Web API
używa innego typu Request
od normalnego MVC Request
o nazwie HttpRequestMessage
, która nie zawiera UrlReferrer
. Ponieważ zwykłe Web API
żądanie nie zawiera tych informacji, jeśli naprawdę ich potrzebujesz, musisz mieć swoich klientów, aby je uwzględnić. Chociaż możesz sprawić, że będzie to częścią twojego API Object
, lepszym sposobem jest użycie Headers
.
Po pierwsze, możesz rozszerzyć HttpRequestMessage
, aby zapewnić UrlReferrer()
"metoda": {]}
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
Następnie twoi klienci muszą ustawić Referrer Header
na ich API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
A teraz Web API Request
zawiera dane odsyłające, do których możesz uzyskać dostęp z twojego Web API
:
Request.UrlReferrer();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 05:47:28
Używam. Net Core 2 mvc, ta jedna mi działa (aby uzyskać Stronę Zapowiedzi):
HttpContext.Request.Headers["Referer"];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-22 10:01:25
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-04 14:57:06
Kiedyś musisz podać cały link w ten sposób
System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
(w opcji, gdy "Aktualny" nie jest założony)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-06 15:01:57