不要缓存并保留表单范围

时间:2017-09-29 19:44:04

标签: google-chrome coldfusion http-headers

场景 - 用户将表单从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保留表单数据?

1 个答案:

答案 0 :(得分:2)

一段时间陷入一些奇怪的缓存问题。 你试过给页面一个版本号吗?

<form action="formAction.cfm?V=#now()#" method="post">