2011-01-21 115 views
1

我正在開發一個Web應用程序開發經典的ASP。它已註銷頂部的菜單基本上會執行下列操作經典ASP註銷過程

  1. Session.Abandon()
  2. 重定向到的index.asp,用戶可以再次登錄按鈕。

註銷用戶後返回到index.asp。但如果用戶點擊返回按鈕瀏覽器,他們會轉到上一頁。我不希望發生這種情況。我想要一條消息說他們已經註銷。我已經實施了以下步驟

1.在每個頁面的頂部添加Response.Expires=-1Response.CacheControl="no-cache"。 2.在每一頁我檢查會話對象,看看它不是空的。如果爲空,我將創建一條消息,說明它們已經註銷並需要重新登錄。

現在,當用戶在註銷後單擊返回按鈕,而不是顯示註銷的消息,我在IE8上收到「網頁過期」消息。當用戶在登錄後在某個頁面上點擊返回按鈕時,我會看到相同的行爲。

任何想法,我可以如何實現這一點更好。

謝謝。

+0

「網頁過期」和類似的消息指示用戶返回到POST的結果的頁面,並且瀏覽器假定頁面狀態已經改變或者重新發布原始請求可能導致問題在Web應用程序中。 – 2011-01-21 11:41:24

回答

1

您無法停止用戶後退。解決此問題的常見方案是,POSTs將目標服務器頁面顯示爲不顯示輸出,而是重定向到新位置(可以看到結果)。

1

有額外的非緩存聲明有時候幫助:

Response.Expires = 0 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "no-cache" 

我看過前一段時間(因而無法找到鏈接),設定一個到期-1可能會導致一些瀏覽器忽略它,而不是它立即過期。

即使添加這些額外的緩存控件也不會阻止某些瀏覽器在某些時間緩存某些內容。 FF經常會忽略用戶強制高速緩存重新加載,因此您在瀏覽器中的某種程度上可以使用。

關於您的「網頁過期」消息,這是(如上所述)瀏覽器試圖阻止您重新提交POST數據(並可能重複您上次所做的操作)的結果。解決這個問題的最好方法是解決表單上其他一些常見的UI問題,然後POST回到同一個頁面,然後如果/當操作完成時,使用response.redirect到同一頁面,也許用URL編碼的消息說「全部成功」。這使您的用戶可以刷新並幫助解決後退按鈕問題,因爲大多數瀏覽器現在都不會在其歷史記錄中正確存儲重定向的頁面。