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.
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.
Respuestas:
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 proporcionado por el cliente (agente de usuario).
Request.UrlReferrer
después de una devolución de datos del lado del servidor. Por supuesto Request.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.
UrlReferrer
hace mucho más que una simple llamada aServerVariables("HTTP_REFERER")
ServerVariables["HTTP_REFERER"]
devuelve una cadena , mientras que Request.UrlReferrer
devuelve un Uri .
Request.Headers["Referer"]
Request.UrlReferer
propiedad arrojará un System.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
La colección ServerVariables recupera los valores de variables de entorno predeterminadas y solicita información de encabezado.
Propiedad 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
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.
Referer
encabezado se escribe de manera diferente a la HTTP_REFERRER
variable del servidor.
Así: Propiedad HttpRequest.UrlReferrer
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
Estoy usando .Net Core 2 mvc, este funciona para mí (para obtener la página de vistas previas):
HttpContext.Request.Headers["Referer"];
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 llamado Request
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 un UrlReferrer()
método:
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
Entonces sus clientes deben configurar el Referrer Header
a su API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Y ahora Web API Request
incluye los datos de referencia a los que puede acceder así desde su Web API
:
Request.UrlReferrer();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();