Je recherche un moyen rapide, facile et fiable d'obtenir le référent HTTP du navigateur en ASP.Net ( C # ). Je sais que le référent HTTP lui-même n'est pas fiable, mais je souhaite un moyen fiable d'obtenir le référent s'il est présent.
Réponses
Trop de publicités?Vous pouvez utiliser la propriété UrlReferrer de la requête en cours:
Request.UrlReferrer
Ceci lira l’en-tête HTTP du référent à partir de la demande, qui peut être fournie ou non par le client (agent utilisateur).
Request.Headers("Referer")
Explication
L' Request.UrlReferer
va jeter un System.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 d' Request.ServerVariables
, par MSDN:
Demande.Collection ServerVariables
La collection ServerVariables récupère les valeurs de certaines variables d'environnement et de demander des informations d'en-tête.
Demande.Les En-Têtes De Propriété
Obtient une collection d'en-têtes HTTP.
Je suppose que je ne comprends pas pourquoi vous préférez l' Request.ServerVariables
sur Request.Headers
, depuis Request.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 l' Request.Headers
de la collecte de 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.
Comme ceci: Propriété HttpRequest.UrlReferrer
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();