ASP.NET-响应.重定向未填充Url引用
我觉得我已经做了很多次了,但我一辈子都搞不清楚到底出了什么问题 Default.aspx: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
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解决方案非常完美!