c# - Obteniendo el HTTP Referrer en ASP.NET
http-headers http-referer (8)
Dado que Google lo lleva a esta publicación cuando busca C# Web API Referrer
, esta es la oferta: Web API
utiliza un tipo diferente de Request
de la MVC Request
normal llamada HttpRequestMessage
que no incluye UrlReferrer
. Dado que una solicitud normal de la Web API
no incluye esta información, si realmente la necesita, debe hacer que sus clientes se desviejen para incluirla. Aunque puede hacer que esto sea parte de su API Object
, una mejor manera es usar Headers
.
En primer lugar, puede extender HttpRequestMessage
para proporcionar un método UrlReferrer()
:
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
Entonces sus clientes necesitan configurar el Referrer Header
en su API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Y ahora, la Web API Request
incluye los datos de referencia a los que puede acceder así desde su Web API
:
Request.UrlReferrer();
Estoy buscando una forma rápida, fácil y confiable de obtener HTTP Referrer del navegador en ASP.Net ( C # ). Sé que HTTP Referrer en sí no es confiable, pero sí quiero una forma confiable de obtener el referrer si está presente.
De esta manera: UrlReferrer
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
En algún momento debe dar todo el enlace como este
System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
(en opción cuando "Actual" no está fundado)
Estoy usando .Net Core 2 mvc, este funciona para mí (para obtener la página de vistas previas):
HttpContext.Request.Headers["Referer"];
Puede usar la propiedad UrlReferrer de la solicitud actual:
Request.UrlReferrer
Esto leerá el encabezado HTTP Referer de la solicitud que puede o no ser suministrado por el cliente (agente de usuario).
Use la propiedad Request.UrlReferrer
.
Debajo de las escenas, solo está comprobando la ServerVariables("HTTP_REFERER")
.
Request.Headers["Referer"]
Explicación
El Request.UrlReferer
arrojará una System.UriFormatException
si el encabezado HTTP del referer está mal formado (lo que puede suceder ya que generalmente no está bajo su control).
En cuanto al uso de Request.ServerVariables
, por MSDN:
Colección Request.ServerVariables
La colección ServerVariables recupera los valores de variables de entorno predeterminadas y solicita información de encabezado.
Propiedad de Request.Headers
Obtiene una colección de encabezados HTTP.
Request.Headers
es una mejor opción que Request.ServerVariables
, ya que Request.ServerVariables
contiene todas las variables de entorno, así como los encabezados, donde Request.Headers
es una lista mucho más corta que solo contiene los encabezados.
Entonces, la mejor solución es usar la colección Request.Headers
para leer el valor directamente. Sin embargo, preste atención a las advertencias de Microsoft sobre el código HTML que codifica el valor si va a mostrarlo en un formulario.
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();