ASP.NET-响应.重定向未填充Url引用

ASP.NET-响应.重定向未填充Url引用,asp.net,response.redirect,referrer,http-referer,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 } protected void Page_Load(object sender, Eve

我觉得我已经做了很多次了,但我一辈子都搞不清楚到底出了什么问题

Default.aspx:

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

protected void Page_Load(object sender, EventArgs e)
{
   var r1 = Request.UrlReferrer; // null
   var r2 = Request.ServerVariables["HTTP_REFERRER"]; // null
}
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中看到它

我唯一能想到的另一个选择是会话


请帮忙=(

所以,我在谷歌上搜索了一下我的答案

不,多亏了堆栈溢出-开玩笑,=)

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

当您手动将其放入URL(我的JavaScript就是这样做的)时,就不会这样了

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

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


除非这里有人有更好的想法,否则这就是我要做的。

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


这就是说,您不应该依赖URLreferer,因为它可以从客户端剥离(通过加载项,甚至不确定是否通过某些浏览器配置)。

虽然已经很晚了,但在您管理响应时。重定向内容时,您可以使用查询参数作为
response.redirect(“/?url=home.aspx&q=where”)


然后,您可以在页面加载或初始化时捕获它,并对

采取适当的操作,好奇地想知道为什么要从java脚本重定向。您描述的场景,我会在服务器端进行检查(可能是在基本页面上)如果用户是否经过身份验证。如果没有,则重定向到进行身份验证的页面。@VinayC-这很复杂。基本上我正在使用Facebook Connect应用程序-页面加载后,javascript让我知道我可以登录他们,因此我重定向。在客户端API执行之前,我不知道我是否可以登录他们。好的,你可以添加你的当用户通过身份验证时拥有cookie,然后从JavaScript中,您可以查看cookie是否存在,以决定是否重定向。如果您不希望使用cookie,则如果用户通过身份验证,您的页面(应在基本页面中完成)必须设置一些JS变量。cookie方法的区别在于cookie只需设置一次(在SingleSignOn.aspx中)而js变量必须在每个页面中设置(因此逻辑应该放在一个公共基页中)。@VinayC-lol,字面上是同时回答了相同的问题。是的,我试过了,请参见上面的答案-只有客户端单击(按钮,锚定)才会导致填充引用者http头。@RPM1984 k,但重定向(“/”)不完全是我提到的,它就像重定向(“)。是的-尝试过,也在一个全新的web项目中尝试过(因此没有其他因素-即URL重写会阻碍)。不行。无论如何,cookie解决方案正在工作,事实上我需要“检查”"在客户端的上一页中,这使它很容易成为一个cookie。谢谢你的帮助tho。非常感谢,我需要一个非常类似的解决方案,因为我修改了一个大杂烩向导,在那里你可以跳过步骤,因为他们没有验证引用者。我也尝试了
urlReferer
,它在开发中起到了作用部署到IIS时失败。cookie解决方案非常完美!