2012-02-24 70 views
0

我目前面臨的問題是IE8決定緩存一個(隱藏)表單字段,我在其中寫入隨機生成的散列,該散列也存儲在會話中。如果表單中發送的哈希值等於存儲在會話中的哈希值,則表單請求是有效的。防止Internet Explorer 8緩存表單數據

但由於IE緩存了這些值,表單中發送的值與會話中存儲的值不同。我怎樣才能防止這種情況發生?我在現場和<form>元素都試過autocomplete="off" ..

隱藏輸入字段如下所示:

<input type="hidden" name="hash" value="hash inserted here" autocomplete="off" /> 

和表單標籤是這樣的:

<form action="action uri" method="post" autocomplete="off"> 

回答

2

autocomplete無關使用它,頁面本身緩存在瀏覽器中。

您可以設置一些頭禁用此:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
0

你可以把這個代碼的HTML HEAD內:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 

或使用火的建議,在你的PHP代碼。