views:

135

answers:

2

I feel like i've done this a ton of times, but i can't for the life of me figure out what is going wrong.

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("/");
}

If i type "/SingleSignOn.aspx" in the URL, it redirects to Default.aspx, but the referrer is null.

What am i missing here?

What im trying to do (this is a simplified example), is on any page, i will have some JavaScript to do the following:

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

Which, you guessed it, signs the user in, and redirects to the homepage.

But i need to build logic into that JavaScript to not redirect to the SingleSignOn.aspx page if we just came from there.

Does the referrer only get populated by actual link user clicks?

How can i do this then? I don't want to use QueryString because i dont want to see that in the URL.

The only other option i can think of is Session.

Please help. =(

A: 

So, i've done some Google'ing to find my answer.

No thanks to Stack Overflow - kidding, =)

So the URL Referrer is only populated by an actual client-click (anchor tag, button).

Not when you manually put it in the URL (which is what my JavaScript is doing).

The solution i am doing to have to with is to create a cookie on the SingleSignOn.aspx page, and read that cookie from the JavaScript before i redirect again.

Just what i need, more cookies. =(

Unless someone here has a better idea, that's what ill be going with.

RPM1984
A: 

Just a hunch, but try using an absolute url instead / including even the http:// part.

That said, you shouldn't rely on the UrlReferrer from being there, as it can be stripped off from the client side (by addins, not sure if even by some browser configs).

eglasius
Yeah i tried that, see my answer above - only a client click (button, anchor) will cause the referrer http header to be populated.
RPM1984
@RPM1984 k, but Redirect("/") is not exactly what I mentioned, it'd be like Redirect("http://myserver.com/").
eglasius
Yes - tried that, also tried it in a brand new web project (so no other factors - ie URL rewriting would get in the way). No go. Anyway the cookie solution is working, and the fact i need to "check" the previous page from client-side, makes it easy the fact its a cookie. Thanks for your help tho.
RPM1984