Session 会话变量的浏览器缓存不一致-有解决方案吗?

Session 会话变量的浏览器缓存不一致-有解决方案吗?,session,caching,Session,Caching,为什么我的会话变量被丢弃在这里 我使用submit按钮提交一个表单,并创建值的会话变量,以允许将它们带到其他页面。一切都好。如果我现在使用浏览器按钮在表单和表单处理程序之间来回移动(某些用户有时可能会这样做),Firefox和Opera将调用会话变量并可以填充表单处理程序。但IE和Safari没有。我能怎么办 如果今天早上我没有在头文件中插入以下内容,Firefox将演示这个问题: header("Cache-Control: no-cache"); header("Expires: -1");

为什么我的会话变量被丢弃在这里

我使用submit按钮提交一个表单,并创建值的会话变量,以允许将它们带到其他页面。一切都好。如果我现在使用浏览器按钮在表单和表单处理程序之间来回移动(某些用户有时可能会这样做),Firefox和Opera将调用会话变量并可以填充表单处理程序。但IE和Safari没有。我能怎么办

如果今天早上我没有在头文件中插入以下内容,Firefox将演示这个问题:

header("Cache-Control: no-cache");
header("Expires: -1");
我读到第二个标题行-
标题(“Expires:-1”)-也应该是IE的修复程序,但情况似乎并非如此。IE8/Safari仍然显示了这个问题。歌剧院根本不需要这个。如果这是一个重新加载问题,我需要在标题中添加什么来强制IE和Safari重新加载


谢谢

您的会话变量没有丢失。相反,当返回时,没有一个浏览器会从您的服务器重新加载表单(默认值由会话变量填写)。但是,一些浏览器会对此很满意,并记住表单字段上次提交时的值,并为您填写这些值。我不会的

在任何情况下,最好通过POST提交表单,服务器通过(HTTP 302)重定向到下一页来响应POST,而不是直接呈现下一页。通过发出重定向,用户返回的任何尝试都会要求他/她确认他们是否真的希望再次提交表单,这可能比表单上没有预先填写的值更大。我在这里猜测你的真实意图是什么,但是如果你真的希望用户能够一行提交多个表单(重复任务),只需在重定向后的下一页再次呈现表单即可。

为什么我的会话变量会被丢弃在这里?浏览器不缓存会话变量-它们缓存在服务器上。浏览器持有会话id为的cookie。因此,1)IE/Safari正在缓存页面,2)IE/Safari没有发送cookie,或者3)服务器丢失了数据。