1

我的网站上有一个页面,可以从其他几个页面访问。在此页面上,我有一个取消按钮,当人们单击该按钮时,我想在服务器上执行一些代码,然后重定向回他们来自的页面。

我试图通过引用 Request.UrlReferrer 来做到这一点,但是一旦发生回发,就会将其设置为当前页面。

我想出了一个使用会话状态的解决方法:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
          Session["referrer"] = Request.UrlReferrer.AbsoluteUri;
    }
}

btn_Cancel_click(object sender, EventArgs e)
{
    //Some other code and then the line below:
    Response.Redirect(Session["referrer"]);
}

但是我很好奇是否有一种更优雅的方法可以在不使用会话状态的情况下做到这一点。谁能为此提出更好的解决方案?

4

1 回答 1

2

使用UrlReferrer取消返回是不安全的,因为许多用户可以选择阻止它(并且不提供他们来自哪里的信息),而且我有时看到恶意程序在那里放置垃圾邮件站点。

正确的方法是在 url 上使用一个参数,告诉您的页面在取消时返回到哪里 - 例如:

http://www.yoursite.com/callpage.aspx?ref=/signin/
于 2013-02-21T23:13:45.717 回答