Obtenir le HTTP Referer ASP.NET
Je suis à la recherche d'un moyen rapide, facile et fiable de l'obtention du navigateur HTTP Referrer dans ASP.Net (C#). Je sais que le Référent HTTP lui-même n'est pas fiable, mais je ne veux pas un moyen fiable d'obtenir le référent s'il est présent.
- double possible de Comment puis-je obtenir l'URL de référence dans un ASP.NET MVC action?
- Bof Asp.Net Base voir Comment puis-je obtenir l'Url Référent dans ASP.NET Core, MVC?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le UrlReferrer propriété de la demande actuelle:
Cela permettra de lire les Referer en-tête HTTP de la requête, ce qui peut ou peut ne pas être fourni par le client (user-agent).
Request.UrlReferrer
après une côté serveur de publication. Bien sûrRequest.UrlReferrer
ont maintenant la valeur de la page que vous êtes en affichant retour à. Dans la plupart des cas, les gens ont besoin de la page précédente. Dans ce cas, assurez-vous de stocker la page précédente en dire un état d'affichage de la variable lorsque la page se charge. Et puis, quand vous accédez à cette variable, il a la page précédente vous êtes venu. Par exemple, dans asp.net les formes de chargement de la page de l'événement que vous pouvez faire:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
HttpContext.Current.Request.UrlReferrer
?If Not IsPostBack Then Dim referrer As Uri = HttpContext.Current.Request.UrlReferrer If referrer Is Nothing Then Response.Write("Null") Else Response.Write(referrer.ToString) end if end if
Et il écrit "Null" à chaque fois. quoi de mal? J'ai changé la page d'où le lien est livré et fonctionne désormais script PHP header(location: mysiteurl') mais il reste encore des allégories "Null"Utiliser le
Request.UrlReferrer
propriété.Dessous les coulisses, il est juste vérifier la
ServerVariables("HTTP_REFERER")
de la propriété.UrlReferrer
fait beaucoup plus qu'un simple appel àServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
renvoie un string, alors queRequest.UrlReferrer
renvoie un Uri.Explication
La
Request.UrlReferer
va jeter unSystem.UriFormatException
si l'en-tête HTTP referer est mal formé (ce qui peut arriver, car il n'est généralement pas sous votre contrôle).Comme pour l'utilisation de
Request.ServerVariables
, par MSDN:Demande.Collection ServerVariables
Demande.Les En-Têtes De Propriété
Request.Headers
est un meilleur choix queRequest.ServerVariables
, depuisRequest.ServerVariables
contient toutes les variables d'environnement ainsi que les en-têtes, oùRequest.Headers
est une liste beaucoup plus courte qui contient uniquement les en-têtes.Donc, la meilleure solution est d'utiliser le
Request.Headers
collection pour lire directement la valeur. Faire attention de Microsoft avertissements sur le code HTML codage de la valeur si vous allez à l'afficher dans un formulaire, si.Referer
en-tête est orthographié différemment de laHTTP_REFERRER
variable de serveur.Comme ceci: HttpRequest.UrlReferrer Propriété
Depuis Google vous emmène à ce poste lors de la recherche pour
C# Web API Referrer
voici l'affaire:Web API
utilise un autre type deRequest
de la normaleMVC Request
appeléHttpRequestMessage
qui ne comprennent pasUrlReferrer
. Depuis un normalWeb API
demande de ne pas inclure cette information, si vous en avez vraiment besoin, vous devez avoir vos clients à sortir de leur façon de l'inclure. Bien que vous pourriez faire de cette partie de votreAPI Object
, une meilleure façon est d'utiliserHeaders
.Tout d'abord, vous pouvez étendre
HttpRequestMessage
de fournir unUrlReferrer()
méthode:Puis vos clients ont besoin pour définir la
Referrer Header
à leurAPI Request
:Et maintenant le
Web API Request
comprend le référent de données auxquelles vous pouvez accéder comme ce à partir de votreWeb API
:Je suis en utilisant .Net Core 2 mvc,
ce un travail pour moi ( pour obtenir un aperçu de la page) :
Parfois, vous devez donner à tous le lien comme ceci
(en option lors de la "Actuel" n'est pas fondée)
Appartenant à d'autres réponse, j'ai ajouté la condition de la clause pour obtenir la valeur null.