我觉得我已经做了很多次了,但是我不能为我的生活弄清楚出了什么问题。
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。
请帮忙。 =(
答案 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")
。
然后您可以在页面加载或初始化时捕获它,并采取适当的措施