Je recherche un moyen rapide, simple et fiable d'obtenir le référent HTTP du navigateur dans ASP.Net ( C # ). Je sais que le référent HTTP lui-même n'est pas fiable, mais je veux un moyen fiable d'obtenir le référent s'il est présent.
c#
asp.net
http
http-headers
http-referer
Chuck Le Butt
la source
la source
Réponses:
Vous pouvez utiliser la propriété UrlReferrer de la requête actuelle:
Cela lira l' en-tête HTTP Referer à partir de la requête qui peut ou non être fournie par le client (agent utilisateur).
la source
Request.UrlReferrer
après une publication côté serveur. Bien sûr,Request.UrlReferrer
aura maintenant la valeur de la page sur laquelle vous postez. Dans la plupart des cas, les utilisateurs ont besoin de la page précédente. Dans ce cas, assurez-vous de stocker la page précédente dans, par exemple, une variable viewstate lorsque la page se charge pour la première fois. Et puis, lorsque vous accédez à cette variable, elle a la page précédente d'où vous venez. Par exemple, dans l'événement de chargement de page des formulaires asp.net, vous pouvez faire:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();
Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");
Utilisez la
Request.UrlReferrer
propriété.Sous les scènes, il ne fait que vérifier la
ServerVariables("HTTP_REFERER")
propriété.la source
UrlReferrer
fait beaucoup plus qu'un simple appel àServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
renvoie une chaîne , alors queRequest.UrlReferrer
renvoie un Uri .Explication
La
Request.UrlReferer
propriété lancera unSystem.UriFormatException
si l'en-tête HTTP du référent est mal formé (ce qui peut arriver car il n'est généralement pas sous votre contrôle).Quant à l'utilisation
Request.ServerVariables
, par MSDN:Request.ServerVariables, collection
Request.Headers, propriété
Request.Headers
est un meilleur choix queRequest.ServerVariables
, puisqueRequest.ServerVariables
contient toutes les variables d'environnement ainsi que les en-têtes, oùRequest.Headers
est une liste beaucoup plus courte qui ne contient que les en-têtes.La meilleure solution est donc d'utiliser la
Request.Headers
collection pour lire directement la valeur. Tenez cependant compte des avertissements de Microsoft concernant l'encodage HTML de la valeur si vous prévoyez de l'afficher sur un formulaire, cependant.la source
Referer
tête est orthographié différemment de laHTTP_REFERRER
variable serveur.Comme ceci: Propriété HttpRequest.UrlReferrer
la source
J'utilise .Net Core 2 mvc, celui-ci fonctionne pour moi (pour obtenir la page des aperçus):
la source
Puisque Google vous amène à cet article lors de la recherche,
C# Web API Referrer
voici l'offre:Web API
utilise un type différentRequest
de l'MVC Request
appel normalHttpRequestMessage
qui n'inclut pasUrlReferrer
. Puisqu'uneWeb API
demande normale n'inclut pas ces informations, si vous en avez vraiment besoin, vous devez obliger vos clients à faire tout leur possible pour les inclure. Bien que vous puissiez en faire partieAPI Object
, une meilleure façon est de l'utiliserHeaders
.Tout d'abord, vous pouvez étendre
HttpRequestMessage
pour fournir uneUrlReferrer()
méthode:Ensuite, vos clients doivent définir le
Referrer Header
sur leurAPI Request
:Et maintenant, le
Web API Request
comprend les données de référence auxquelles vous pouvez accéder comme ceci à partir de votreWeb API
:la source
la source
Parfois, vous devez donner tout le lien comme celui-ci
(en option lorsque "Actuel" n'est pas fondé)
la source
Appartenant à une autre réponse, j'ai ajouté une clause de condition pour obtenir la nullité.
la source