2013-02-21 39 views
1

我在我的網站上有一個頁面,可以從其他幾個頁面進入。在這個頁面上,我有一個取消按鈕,當用戶點擊時,我想在服務器上執行一些代碼,然後重定向回它們來自的頁面。如何跟蹤回覆郵件的http referrer?

我試圖通過引用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"]); 
} 

不過我很好奇,如果有這樣做沒有使用會話狀態的更優雅的方式。任何人都可以提出更好的解決方案嗎?

回答

2

UrlReferrer是不安全的用於返回與取消,因爲許多用戶可以ether選擇來阻止它(而不是從他們來自哪裏給出信息),我也看到有些時候,惡意程序有垃圾網站。

正確的方法是使用上的URL參數,告訴你的頁面,就取消返回 - 如:

http://www.yoursite.com/callpage.aspx?ref=/signin/