Estoy buscando una manera rápida, fácil y fiable de conseguir Referente HTTP del navegador en ASP.Net (C#). Sé que HTTP Referrer en sí no es confiable, pero sí quiero una forma confiable de obtener la referencia si es presente.Conseguir el Referente HTTP en ASP.NET
Respuesta
Usted puede utilizar la propiedad UrlReferrer de la solicitud actual:
Request.UrlReferrer
Esto va a leer el encabezado HTTP Referer partir de la solicitud que puede o no puede ser suministrado por el cliente (agente de usuario).
debe tenerse en cuenta que esta propiedad será lanzar una System.UriFormatException si la cabecera HTTP árbitro está mal formado. – NightOwl888
@Darin Dimitrov Estoy tratando de crear una API REST usando la API WEB. UrlReferrer no es parte del objeto Solicitud. ¿Debo agregar algo de "usar", etc. ¿Qué me estoy perdiendo? una DLL? – Ravi
Cabe señalar que la diferencia es la ortografía es correcta. El encabezado http está mal escrito. MS usa la ortografía correcta en el nombre de la propiedad. Lamentablemente, los dos no coinciden, lo que puede causar confusión a algunas personas (me) al realizar la prueba. – John
Utilice la propiedad Request.UrlReferrer
.
Debajo de las escenas solo está revisando la propiedad ServerVariables("HTTP_REFERER")
.
Así que no habría nada diferente si utilicé: HttpContext.Current.Request.ServerVariables [ "HTTP_REFERER "]? –
En teoría no hay diferencia, en la práctica no puedo asegurarlo ya que un vistazo rápido con reflector muestra que 'UrlReferrer' hace mucho más que una simple llamada a' ServerVariables ("HTTP_REFERER") ' – Diadistis
Puedo decirle que 'ServerVariables [" HTTP_REFERER "]' devuelve una * cadena *, mientras que 'Request.UrlReferrer' devuelve un * Uri *. –
De esta manera: HttpRequest.UrlReferrer Property
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
Para salvaguardar contra null, puede decir: string actual = "" + Request.UrlReferrer ?? "(defecto)"; // (predeterminado) puede estar en la cadena vacía – Sheepy
Request.Headers["Referer"]
Explicación
El Request.UrlReferer
arrojará un System.UriFormatException
si la cabecera árbitro HTTP está mal formado (que puede suceder ya que no es por lo general bajo su control).
En cuanto a usar Request.ServerVariables
, por MSDN:
Request.ServerVariables Colección
La colección ServerVariables recupera los valores de las variables de entorno predeterminadas e información de encabezado de solicitud.
Request.Headers Propiedad
Obtiene una colección de cabeceras HTTP.
Request.Headers
es una mejor opción que Request.ServerVariables
, ya Request.ServerVariables
contiene todas las variables de entorno, así como las cabeceras, donde Request.Headers
es una lista mucho más corta que sólo contiene las cabeceras.
Así que la mejor solución es utilizar 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.
Tenga en cuenta que el encabezado 'Referer' se deletrea de forma diferente que la variable de servidor' HTTP_REFERRER'. –
Desde Google te lleva a este puesto en la búsqueda de C# Web API Referrer
éste es el trato: Web API
utiliza un tipo diferente de Request
de normal MVC Request
llamada HttpRequestMessage
que no incluye UrlReferrer
. Dado que una solicitud normal de Web API
no incluye esta información, si realmente la necesita, debe hacer que sus clientes se desviejen para incluirla. Aunque podría hacer que esto sea parte de su API Object
, una mejor manera es usar Headers
.
En primer lugar, se puede extender HttpRequestMessage
proporcionar un método UrlReferrer()
:
public static string UrlReferrer(this HttpRequestMessage request)
{
return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
}
A continuación, sus clientes necesitan para establecer el Referrer Header
a su API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Y ahora el Web API Request
incluye los datos de referencia que se puede acceder así desde su Web API
:
Request.UrlReferrer();
string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
estoy usando .Net Core 2 MVC, éste trabajo para mí (para obtener vistas previas de la página):
HttpContext.Request.Headers["Referer"];
En algún momento usted debe dar todo el enlace tal que así
System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
(en opción al "actual" no fundada)
- 1. ¿Cuál es una forma segura de conocer el referidor/referente en una solicitud HTTP?
- 2. Tipo referente a "FlexibleInstances"
- 3. Finalizando con agrado el referente de SoftReference
- 4. ASP.NET MVC conseguir Mensaje de excepción en el Ajax
- 5. asp.net mvc HttpPostedFileBase conseguir extensión de archivo
- 6. referente cambiante de const std :: string reference
- 7. Conseguir TTFB (tiempo hasta primer byte) para una solicitud HTTP
- 8. Cómo simular HTTP POST programáticamente en ASP.NET?
- 9. Encabezado de autorización HTTP ASP.NET
- 10. Seguimiento de un evento a un referente en Google Analytics
- 11. Obtener HTTP Referrer en Redirección
- 12. ¿Cómo conseguir que ASP.NET MVC coincida con el carácter de punto (".") Al final de una ruta?
- 13. ¿Por qué ASP.NET framework agrega el encabezado HTTP 'X-Powered-By: ASP.NET' en las respuestas?
- 14. Gestores de Http personalizados IIS7 y ASP.NET
- 15. Spoofing Datos HTTP Referrer usando ASP.NET
- 16. ASP.NET MVC3 redirigir desde https a http
- 17. ASP.NET MVC [RequireHttps] - retorno a http
- 18. ASP.NET MVC y HTTP 401.0 - no autorizado
- 19. asp.net http server push to client
- 20. Conseguir el camino de% AppData% en PowerShell
- 21. Conseguir el manipulador de ventana en C#
- 22. Conseguir el nodo padre atributos en XSL
- 23. Enviar un hash de ubicación a través de un referente
- 24. Response.Redirect strips Referente del encabezado: ¿es posible volver a agregarlo?
- 25. ¿Cómo conseguir que asp.net no desactive automáticamente las barras diagonales escapadas en las URL?
- 26. Detectar/país estimación de una petición http en ASP.NET
- 27. ¿Cómo puedo probar una publicación HTTP con Moq en ASP.NET?
- 28. 404 Controlador de error Http en Asp.Net MVC (RC 5)
- 29. ¿Cómo soportar solicitudes HTTP comprimidas en Asp.Net 4.0/IIS7?
- 30. Alternar entre HTTP y HTTPS en ASP.NET MVC 1.0
posible duplicado de [¿Cómo consigo la URL de referencia en una acción ASP.NET MVC?] (http: // st ackoverflow.com/questions/1471188/how-do-i-get-the-referrer-url-in-an-asp-net-mvc-action) –
Fro Asp.Net Core ver [¿Cómo puedo obtener URL de referencia en ASP .NET MVC Core?] (// stackoverflow.com/q/38772394) –