2010-09-17 71 views
12

Siento que he hecho esto una tonelada de veces, pero no puedo por la vida de averiguar qué está pasando mal.ASP.NET - Response.Redirect Not Populating Url Referrer

Default.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var r1 = Request.UrlReferrer; // null 
    var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null 
} 

SingleSignOn.aspx:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Redirect("/"); 
} 

si escribo "/SingleSignOn.aspx" en la URL, redirecciona a Default.aspx, pero el referente es nulo.

¿Qué es lo que falta aquí?

Lo que estoy tratando de hacer (esto es un ejemplo simplificado), es en cualquier página, voy a tener algo de JavaScript para hacer lo siguiente:

window.location.replace('~/SingleSignOn.aspx'); 

cual, lo has adivinado, firma el usuario en, y redirige a la página de inicio.

Pero necesito construir lógica en ese JavaScript para no redirigir a la página SingleSignOn.aspx si acabamos de llegar de allí.

¿El referente solo se llena con los clics reales del usuario del enlace?

¿Cómo puedo hacer esto? No quiero usar QueryString porque no quiero ver eso en la URL.

La única otra opción que puedo pensar es Session.

Por favor ayuda. = (

+0

Es curioso saber por qué estás redireccionando java-script. El escenario que describes, lo habría comprobado por el lado del servidor (probablemente en el inicio de la página base) si el usuario está autenticado o no. De lo contrario, redirige al página que lo hace. – VinayC

+0

@VinayC - es complicado.Básicamente estoy trabajando en una aplicación de Facebook Connect: una vez cargada la página, javascript me permite saber que puedo iniciar sesión y, por lo tanto, redirijo. No sé si puedo firmarlos hasta que se ejecuten las API del lado del cliente. – RPM1984

+0

Bueno, puedes agregar tu propia cookie cuando el usuario está autenticado y luego desde javacript, puedes ver si la cookie existe o no para decidir si redirigir o no. Si no desea utilizar cookies, entonces sus páginas (deben hacerse en la página base) tiene que establecer alguna variable JS si el usuario está autenticado. La diferencia entre el enfoque de cookies es que la cookie debe establecerse solo una vez (en SingleSignOn.aspx), mientras que la variable js debe establecerse en cada página (por lo tanto, la lógica debe colocarse en una página base común). – VinayC

Respuesta

9

Por lo tanto, he hecho algunas Google'ing encontrar mi respuesta

No gracias a desbordamiento de pila -., Es broma =)

Así que la URL de referencia única ha sido realizada por un cliente real -click (etiqueta de anclaje, botón).

No cuando lo pones manualmente en la URL (que es lo que mi JavaScript está haciendo).

La solución que estoy tratando de hacer es crear una cookie en la página SingleSignOn.aspx, y leer esa cookie desde JavaScript antes de volver a redirigir.

Justo lo que necesito, más cookies. = (

A menos que alguien de aquí tiene una idea mejor, eso es lo que enferma se va con

+1

Muchas gracias, tuve la necesidad de una solución muy similar porque estaba modificando un asistente de hodgepodge en el que podías saltear pasos porque no estaban verificando el referente. Probé el 'UrlReferrer' también y funcionó en el desarrollo y falló cuando se implementó en IIS. ¡Una solución de cookie fue perfecta! –

0

sólo una corazonada, pero trate de usar una URL absoluta en lugar/incluyendo incluso el http:.. // parte

Dicho esto, no debes confiar en que el UrlReferrer esté allí, ya que puede ser eliminado del lado del cliente (por addins, no estoy seguro si incluso por algunas configuraciones del navegador).

+0

Sí, lo intenté, vea mi respuesta anterior: solo un clic del cliente (botón, ancla) hará que se rellene el encabezado http de referencia. – RPM1984

+0

@ RPM1984 k, pero Redirect ("/") no es exactamente lo que mencioné, sería como Redirect ("http://myserver.com/"). – eglasius

+0

Sí, lo probé, también lo probé en un nuevo proyecto web (por lo que no hay otros factores, es decir, la reescritura de URL se interponga). No vayas. De todos modos, la solución de cookies está funcionando, y el hecho de que necesite "verificar" la página anterior desde el lado del cliente, facilita que sea una cookie. Gracias por tu ayuda, aunque – RPM1984

Cuestiones relacionadas