13

我觉得我已经做了很多次了,但我一辈子都无法弄清楚出了什么问题。

默认.aspx:

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

单点登录.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 中看到它。

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

请帮忙。=(

4

3 回答 3

10

所以,我做了一些谷歌搜索来找到我的答案。

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

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

当您手动将其放入 URL 时(这是我的 JavaScript 正在做的),则不是。

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

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

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

于 2010-09-17T05:30:24.760 回答
1

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

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

于 2020-03-30T15:31:44.167 回答
0

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

也就是说,您不应该依赖 UrlReferrer 存在,因为它可以从客户端剥离(通过插件,甚至不确定是否通过某些浏览器配置)。

于 2010-09-17T06:48:36.277 回答