场景 - 用户将表单从formSubmit.cfm发布到formAction.cfm,该表单创建不应存储在浏览器缓存中的html数据。它还有linkTarget.cfm的锚标签。如果用户使用他的浏览器返回到formAction.cfm,浏览器会提示他重新提交表单。
这通常可以通过http-header实现,使用<cfheader>
标记可以更简单。
问题是,对于Chrome,如果我成功没有缓存页面,我就会失去表单范围。
代码示例:
formSubmit.cfm
<form action="formAction.cfm" method="post">
<input type="submit" name="submittedForm" value="submitMe" />
</form>
formAction.cfm (minus headers)
<cfif structKeyExists(form, 'submittedForm')>
<p>Form Scope exists</p>
<cfelse>
<p>Form Scope Does Not Exist</p>
</cfif>
<p><a href="linkTarget.cfm">Link to next page.</a></p>
测试方法是清除缓存,然后通过浏览到chrome:// cache /来查看它。到那里,我会搜索formAction.cfm。此外,每次清除缓存时我都必须刷新页面。
我尝试了各种标题组合,但这里最相关。
<CFHEADER NAME="Cache-Control" VALUE="no-cache">
result - page was cached
<CFHEADER NAME="Cache-Control" VALUE="no-store">
result
page to confirm form resubmission
no form scope
此外,使用Chrome的开发者工具,表单数据的存在与否与structKeyExists函数的结果相匹配。
如何在不缓存页面的情况下让Chrome保留表单数据?
答案 0 :(得分:2)
一段时间陷入一些奇怪的缓存问题。 你试过给页面一个版本号吗?
<form action="formAction.cfm?V=#now()#" method="post">