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.UrlReferrer
despué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.UrlReferrer
propiedad.Debajo de las escenas, solo está revisando la
ServerVariables("HTTP_REFERER")
propiedad.fuente
UrlReferrer
hace mucho más que una simple llamada aServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
devuelve una cadena , mientras queRequest.UrlReferrer
devuelve un Uri .Explicación
La
Request.UrlReferer
propiedad arrojará unSystem.UriFormatException
si 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.Headers
es una mejor opción queRequest.ServerVariables
, ya queRequest.ServerVariables
contiene todas las variables de entorno, así como los encabezados, dondeRequest.Headers
hay una lista mucho más corta que solo contiene los encabezados.Entonces, la mejor solución es usar la
Request.Headers
colecció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
Referer
encabezado se escribe de manera diferente a laHTTP_REFERRER
variable 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 Referrer
aquí está el trato:Web API
usa un tipo diferente de llamadoRequest
normal 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 Request
HttpRequestMessage
UrlReferrer
Web API
API Object
Headers
Primero, puede extender
HttpRequestMessage
para proporcionar unUrlReferrer()
método:Entonces sus clientes deben configurar el
Referrer Header
a suAPI Request
:Y ahora
Web API Request
incluye 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