Ich suche nach einer schnellen, einfachen und zuverlässigen Möglichkeit, den HTTP-Referrer des Browsers in ASP.Net ( C # ) abzurufen . Ich weiß , dass die Referrer selbst unzuverlässig ist, aber ich will einen zuverlässigen Weg , um die Referrer zu bekommen , wenn es ist vorhanden.
c#
asp.net
http
http-headers
http-referer
Chuck Le Butt
quelle
quelle
Antworten:
Sie können die UrlReferrer- Eigenschaft der aktuellen Anforderung verwenden:
Dadurch wird der Referer- HTTP-Header aus der Anforderung gelesen, die möglicherweise vom Client (Benutzeragent) bereitgestellt wird oder nicht.
quelle
Request.UrlReferrer
nach einem serverseitigen Postback verwenden. NatürlichRequest.UrlReferrer
hat jetzt der Wert der Seite, auf der Sie zurück posten. In den meisten Fällen benötigen die Benutzer die vorherige Seite. Stellen Sie in diesem Fall sicher, dass Sie die vorherige Seite beispielsweise beim ersten Laden der Seite in einer Ansichtsstatusvariablen speichern. Wenn Sie dann auf diese Variable zugreifen, wird die vorherige Seite angezeigt, von der Sie gekommen sind. Zum Beispiel können Sie in asp.net Forms Page Load Eventif (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Verwenden Sie die
Request.UrlReferrer
Eigenschaft.Unter den Kulissen wird nur die
ServerVariables("HTTP_REFERER")
Eigenschaft überprüft .quelle
UrlReferrer
dies viel mehr ist als ein einfacher Anruf beiServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
ein String zurückgegeben wird , währendRequest.UrlReferrer
ein Uri zurückgegeben wird .Erläuterung
Die
Request.UrlReferer
Eigenschaft löst ein aus,System.UriFormatException
wenn der Referer-HTTP-Header fehlerhaft ist (was passieren kann, da er normalerweise nicht unter Ihrer Kontrolle steht).Wie für die Verwendung
Request.ServerVariables
, pro MSDN:Request.ServerVariables-Sammlung
Request.Headers-Eigenschaft
Request.Headers
ist eine bessere Wahl alsRequest.ServerVariables
, daRequest.ServerVariables
alle Umgebungsvariablen sowie die Header enthalten sind, wobeiRequest.Headers
eine viel kürzere Liste nur die Header enthält.Die beste Lösung besteht also darin, die
Request.Headers
Sammlung zu verwenden, um den Wert direkt zu lesen. Beachten Sie jedoch die Warnungen von Microsoft bezüglich der HTML-Codierung des Werts, wenn Sie ihn in einem Formular anzeigen möchten.quelle
Referer
Header anders geschrieben ist als dieHTTP_REFERRER
Servervariable.So: HttpRequest.UrlReferrer-Eigenschaft
quelle
Ich verwende .Net Core 2 mvc, dieses funktioniert für mich (um die Vorschauseite zu erhalten):
quelle
Da Google Sie zu diesem Beitrag führt, wenn Sie nach
C# Web API Referrer
dem folgenden Angebot suchen :Web API
Verwendet einen anderen TypRequest
als normalMVC Request
genannt,HttpRequestMessage
der nicht enthalten istUrlReferrer
. Da eine normaleWeb API
Anfrage diese Informationen nicht enthält, müssen Ihre Kunden, wenn Sie sie wirklich benötigen, alles daran setzen, sie aufzunehmen. Obwohl Sie dies zu einem Teil Ihrer machen könnten, ist esAPI Object
besser, es zu verwendenHeaders
.Zunächst können Sie
HttpRequestMessage
eineUrlReferrer()
Methode erweitern:Dann müssen Sie Ihren Kunden die festlegen ,
Referrer Header
um ihreAPI Request
:Und jetzt
Web API Request
enthält das die Referrer-Daten, auf die Sie wie folgt zugreifen könnenWeb API
:quelle
quelle
Irgendwann müssen Sie alle Links so geben
(in Option, wenn "Current" nicht gegründet wurde)
quelle
Zu einer anderen Antwort gehörend, habe ich eine Bedingungsklausel hinzugefügt, um null zu erhalten.
quelle