Obtenir le référent HTTP ASP.NET

Je cherche un moyen rapide, facile et fiable d'obtenir le HTTP Referrer 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 Si est présent.

88
demandé sur skeletank 2010-11-23 19:19:45

8 réponses

Vous pouvez utiliser la propriété UrlReferrer de la requête en cours:

Request.UrlReferrer

Cela Lira l'en-tête HTTP Referer de la requête qui peut ou non être fournie par le client (agent utilisateur).

152
répondu Darin Dimitrov 2010-11-23 16:28:36

Utilisez la propriété Request.UrlReferrer.

Sous les scènes, il suffit de vérifier la propriété ServerVariables("HTTP_REFERER").

18
répondu Dismissile 2017-11-07 13:29:14

Comme ceci: HttpRequest.UrlReferrer Propriété

Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
12
répondu Tom 2014-09-09 10:41:16
Request.Headers["Referer"]

Explication

Le {[1] } lancera 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 de Request.ServerVariables, par MSDN:

Demande.Collection ServerVariables

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.

Demande.Propriété Headers

Obtient une collection D'en-têtes HTTP.

Request.Headers est un meilleur choix que Request.ServerVariables 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.

La meilleure solution est donc d'utiliser la collection Request.Headers pour lire directement la valeur. Faites attention aux avertissements de Microsoft sur l'encodage HTML de la valeur si vous allez l'afficher sur un formulaire, cependant.

12
répondu NightOwl888 2017-10-16 14:53:16

Puisque Google vous emmène à ce post lors de la recherche de C# Web API Referrer Voici l'affaire: Web API utilise un type différent de Request de MVC Request normal appelé HttpRequestMessage qui n'inclut pas UrlReferrer. Comme une demande Web API normale n'inclut pas cette information, Si vous en avez vraiment besoin, vous devez demander à vos clients de faire tout leur possible pour l'inclure. Bien que vous pourriez faire de cette partie de votre API Object, une meilleure façon est d'utiliser Headers.

Tout d'Abord, vous pouvez étendre HttpRequestMessage pour fournir un 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 à leur API Request:

// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);

Et maintenant le Web API Request inclut les données de référence auxquelles vous pouvez accéder comme ceci à partir de votre Web API:

Request.UrlReferrer();
8
répondu Serj Sagan 2015-09-08 05:47:28

J'utilise. Net Core 2 mvc, celui-ci fonctionne pour moi (pour obtenir la page previews):

HttpContext.Request.Headers["Referer"];
4
répondu Saad Hasan 2017-12-22 10:01:25
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
1
répondu Donat Sasin 2016-11-04 14:57:06

Parfois, vous devez donner tout le lien comme ceci

System.Web.HttpContext.Current.Request.UrlReferrer.ToString();

(en option lorsque "Current" n'est pas fondé)

0
répondu Sportac 2017-12-06 15:01:57