Szukam szybkiego, łatwego i niezawodnego sposobu uzyskania strony odsyłającej HTTP przeglądarki w ASP.Net ( C # ). Wiem, że sama strona odsyłająca HTTP jest niewiarygodna, ale potrzebuję niezawodnego sposobu uzyskania strony odsyłającej, jeśli jest obecna.
c#
asp.net
http
http-headers
http-referer
Chuck Le Butt
źródło
źródło
Odpowiedzi:
Możesz użyć właściwości UrlReferrer bieżącego żądania:
Spowoduje to odczytanie nagłówka HTTP Referer z żądania, które może, ale nie musi być dostarczone przez klienta (agenta użytkownika).
źródło
Request.UrlReferrer
po ogłoszeniu zwrotnym po stronie serwera. OczywiścieRequest.UrlReferrer
będzie teraz mieć wartość strony, na którą wysyłasz z powrotem. W większości przypadków ludzie potrzebują poprzedniej strony. W takim przypadku upewnij się, że poprzednia strona była przechowywana w, na przykład zmienną stanu widoku, podczas pierwszego ładowania strony. A kiedy uzyskasz dostęp do tej zmiennej, ma ona poprzednią stronę, z której przyszedłeś. Na przykład w zdarzeniu ładowania strony formularzy asp.net można wykonać:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Skorzystaj z
Request.UrlReferrer
nieruchomości.Pod scenami po prostu sprawdza
ServerVariables("HTTP_REFERER")
nieruchomość.źródło
UrlReferrer
robi o wiele więcej niż zwykłe połączenieServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
zwraca łańcuch , aRequest.UrlReferrer
zwraca Uri .Wyjaśnienie
Request.UrlReferer
Nieruchomość rzuciSystem.UriFormatException
jeśli Referer HTTP nagłówek jest niepoprawny (co może się zdarzyć, ponieważ zwykle nie jest pod kontrolą).Jeśli chodzi o używanie
Request.ServerVariables
, według MSDN:Kolekcja Request.ServerVariables
Właściwość Request.Headers
Request.Headers
jest lepszym wyborem niżRequest.ServerVariables
, ponieważRequest.ServerVariables
zawiera wszystkie zmienne środowiskowe, a także nagłówki, gdzieRequest.Headers
jest znacznie krótsza lista, która zawiera tylko nagłówki.Dlatego najlepszym rozwiązaniem jest użycie
Request.Headers
kolekcji do bezpośredniego odczytania wartości. Zwróć jednak uwagę na ostrzeżenia Microsoftu dotyczące kodowania wartości HTML, jeśli zamierzasz wyświetlić ją w formularzu.źródło
Referer
nagłówek jest napisany inaczej niżHTTP_REFERRER
zmienna serwera.W ten sposób: HttpRequest.UrlReferrer Property
źródło
Używam mvc .Net Core 2, ten działa dla mnie (aby uzyskać stronę podglądów):
źródło
Ponieważ Google przeniesie Cię do tego postu, szukając
C# Web API Referrer
tutaj jest wiele:Web API
wykorzystuje inny typRequest
od normalnegoMVC Request
o nazwieHttpRequestMessage
, która nie obejmujeUrlReferrer
. Ponieważ zwykłeWeb API
żądanie nie zawiera tych informacji, jeśli naprawdę ich potrzebujesz, musisz nakłonić klientów do zrobienia wszystkiego, aby je uwzględnić. Chociaż możesz uczynić to częścią swojegoAPI Object
, lepszym sposobem jest użycieHeaders
.Po pierwsze, możesz rozszerzyć,
HttpRequestMessage
aby udostępnićUrlReferrer()
metodę:Następnie klienci muszą ustawić
Referrer Header
do swoichAPI Request
:A teraz
Web API Request
zawiera dane strony odsyłającej, do których możesz uzyskać dostęp w ten sposób zWeb API
:źródło
źródło
Kiedyś musisz podać wszystkie linki w ten sposób
(w opcji, gdy „Bieżący” nie został założony)
źródło
Należąc do innej odpowiedzi, dodałem klauzulę warunkową dla uzyskania null.
źródło