阻止Internet Explorer 8缓存表单数据



我目前面临的问题是,IE8决定缓存一个(隐藏的)表单字段,我在其中写入随机生成的哈希,该哈希也存储在会话中。如果表单中发送的哈希等于会话中存储的哈希,则表单请求有效。

但由于IE缓存这些值,因此表单中发送的值与会话中存储的值不同。我该如何防止这种情况发生?我在字段和<form>元素中都尝试了autocomplete="off"。。

隐藏的输入字段如下所示:

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

表单标签如下:

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

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

您可以将此代码放入HTML HEAD:

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

或者在PHP代码中使用Fire的建议。

最新更新