Estoy buscando una forma rápida, fácil y confiable de obtener la referencia HTTP del navegador en ASP.Net ( C # ). Sé que la referencia HTTP en sí no es confiable, pero quiero una forma confiable de obtener la referencia si está presente.
c#
asp.net
http
http-headers
http-referer
Chuck Le Butt
fuente
fuente

Respuestas:
Puede usar la propiedad UrlReferrer de la solicitud actual:
Esto leerá el encabezado HTTP Referer de la solicitud que puede o no ser proporcionado por el cliente (agente de usuario).
fuente
Request.UrlReferrerdespués de una devolución de datos del lado del servidor. Por supuestoRequest.UrlReferrer, ahora tendrá el valor de la página en la que está publicando. En la mayoría de los casos, las personas necesitan la página anterior. En este caso, asegúrese de almacenar la página anterior en, por ejemplo, una variable viewstate cuando la página se carga por primera vez. Y luego, cuando accede a esta variable, tiene la página anterior de la que vino. Por ejemplo, en el evento de carga de la página de formularios asp.net, puede hacer:if (Request.UrlReferrer != null) ViewState["PreviousPageUrl"] = Request.UrlReferrer.ToString();Response.Redirect(ViewState["PreviousPageUrl"] != null ? ViewState["PreviousPageUrl"].ToString() : "SomeOtherPage.aspx");Usa la
Request.UrlReferrerpropiedad.Debajo de las escenas, solo está revisando la
ServerVariables("HTTP_REFERER")propiedad.fuente
UrlReferrerhace mucho más que una simple llamada aServerVariables("HTTP_REFERER")ServerVariables["HTTP_REFERER"]devuelve una cadena , mientras queRequest.UrlReferrerdevuelve un Uri .Explicación
La
Request.UrlRefererpropiedad arrojará unSystem.UriFormatExceptionsi el encabezado HTTP del referente está mal formado (lo que puede suceder ya que generalmente no está bajo su control).En cuanto al uso
Request.ServerVariables, por MSDN:Request.ServerVariables Collection
Propiedad Request.Headers
Request.Headerses una mejor opción queRequest.ServerVariables, ya queRequest.ServerVariablescontiene todas las variables de entorno, así como los encabezados, dondeRequest.Headershay una lista mucho más corta que solo contiene los encabezados.Entonces, la mejor solución es usar la
Request.Headerscolección para leer el valor directamente. Sin embargo, preste atención a las advertencias de Microsoft sobre la codificación HTML del valor si lo va a mostrar en un formulario.fuente
Refererencabezado se escribe de manera diferente a laHTTP_REFERRERvariable del servidor.Así: Propiedad HttpRequest.UrlReferrer
fuente
Estoy usando .Net Core 2 mvc, este funciona para mí (para obtener la página de vistas previas):
fuente
Dado que Google lo lleva a esta publicación cuando busca,
C# Web API Referreraquí está el trato:Web APIusa un tipo diferente de llamadoRequestnormal que no incluye . Dado que una solicitud normal no incluye esta información, si realmente la necesita, debe hacer que sus clientes hagan todo lo posible para incluirla. Aunque podría hacer que esto sea parte de su , una mejor manera es usar .MVC RequestHttpRequestMessageUrlReferrerWeb APIAPI ObjectHeadersPrimero, puede extender
HttpRequestMessagepara proporcionar unUrlReferrer()método:Entonces sus clientes deben configurar el
Referrer Headera suAPI Request:Y ahora
Web API Requestincluye los datos de referencia a los que puede acceder así desde suWeb API:fuente
fuente
En algún momento debes dar todo el enlace así
(en opción cuando "Actual" no está fundado)
fuente
Al pertenecer a otra respuesta, he agregado una cláusula de condición para obtener nulos.
fuente