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.
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.
Réponses:
Vous pouvez utiliser la propriété UrlReferrer de la requête actuelle:
Request.UrlReferrer
Cela lira l' en-tête HTTP Referer à partir de la requête qui peut ou non être fournie par le client (agent utilisateur).
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é.
UrlReferrer
fait beaucoup plus qu'un simple appel àServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
renvoie une chaîne , alors que Request.UrlReferrer
renvoie un Uri .
Request.Headers["Referer"]
Request.UrlReferer
propriété lancera un System.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
La collection ServerVariables récupère les valeurs des variables d'environnement prédéterminées et les informations d'en-tête de demande.
Request.Headers, propriété
Obtient une collection d'en-têtes HTTP.
Request.Headers
est un meilleur choix que Request.ServerVariables
, puisque Request.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.
Referer
tête est orthographié différemment de la HTTP_REFERRER
variable serveur.
Comme ceci: Propriété HttpRequest.UrlReferrer
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
J'utilise .Net Core 2 mvc, celui-ci fonctionne pour moi (pour obtenir la page des aperçus):
HttpContext.Request.Headers["Referer"];
Puisque Google vous amène à cet article lors de la recherche, C# Web API Referrer
voici l'offre: Web API
utilise un type différent Request
de l' MVC Request
appel normal HttpRequestMessage
qui n'inclut pas UrlReferrer
. Puisqu'une Web 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 partie API Object
, une meilleure façon est de l'utiliser Headers
.
Tout d'abord, vous pouvez étendre HttpRequestMessage
pour fournir une UrlReferrer()
méthode:
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
Ensuite, vos clients doivent définir le Referrer Header
sur leur API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Et maintenant, le Web API Request
comprend les données de référence auxquelles vous pouvez accéder comme ceci à partir de votre Web API
:
Request.UrlReferrer();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();