我的网站上有一个页面,可以从其他几个页面到达。在这个页面上,我有一个取消按钮,当人们点击它时,我想在服务器上执行一些代码,然后重定向回他们来自的页面。
我试图通过引用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"]);
}
但我很好奇是否有一种更优雅的方式可以在不使用会话状态的情况下执行此操作。任何人都可以为此提出更好的解决方案吗?
答案 0 :(得分:2)
使用取消返回UrlReferrer
是不安全的,因为很多用户可以选择阻止它(而不是从它们来自哪里提供信息),而且我也看到过一些时间恶意程序将垃圾网站放在那里。
正确的方法是在网址上使用一个参数告诉您的网页在取消时返回的位置 - 例如:
http://www.yoursite.com/callpage.aspx?ref=/signin/