ASP.NET - Response.Redirect未填充Url Referrer

时间:2010-09-17 04:54:28

标签: asp.net response.redirect referrer http-referer

我觉得我已经做了很多次了,但是我不能为我的生活弄清楚出了什么问题。

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

如果我在URL中键入“/SingleSignOn.aspx”,它会重定向到Default.aspx,但引用者为空。

我在这里缺少什么?

我想尝试做什么(这是一个简化的例子),在任何页面上,我都会有一些JavaScript来执行以下操作:

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

你猜对了,用户签名,然后重定向到主页。

但我需要在JavaScript中构建逻辑,以便在我们刚刚来到那里时不会重定向到SingleSignOn.aspx页面。

引荐来源是否仅由实际链接用户点击填充?

我怎么能这样做呢?我不想使用QueryString,因为我不想在URL中看到它。

我能想到的唯一其他选择是Session。

请帮忙。 =(

3 个答案:

答案 0 :(得分:9)

所以,我已经做了一些谷歌寻找我的答案。

不,谢谢Stack Overflow - 开玩笑,=)

因此,URL Referrer仅由实际的客户端点击填充(锚标记,按钮)。

当您手动将其放入URL(这是我的JavaScript正在执行的操作)时,不是这样。

我正在做的解决方案是在SingleSignOn.aspx页面上创建一个cookie,并在重新定向之前从JavaScript中读取该cookie。

正是我需要的,更多的饼干。 =(

除非这里的某个人有更好的主意,否则就是这样。

答案 1 :(得分:0)

只是预感,但尝试使用绝对网址/甚至包括http://部分。

那就是说,你不应该依赖于UrlReferrer,因为它可以从客户端剥离(通过插件,即使是某些浏览器配置也不确定)。

答案 2 :(得分:0)

已经很晚了,但是当您管理响应时。重定向内容,您可以将查询参数用作response.redirect("/?url=home.aspx&q=whatever")

然后您可以在页面加载或初始化时捕获它,并采取适当的措施