我目前面临的问题是,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的建议。