Node.js 节点js/Express js表单在发布数据后不会过期

Node.js 节点js/Express js表单在发布数据后不会过期,node.js,express,Node.js,Express,首先,我想通知您,我是NodeJS的新手 我被要求在NodeJS中实现一个简单的应用程序。 因此,我创建了一个表单,通过POST方法提交其数据。 当检索和处理数据时,我呈现另一个页面,以便显示有关提交的数据和整个过程的结果的一些信息 我的问题是,用户可以从浏览器中单击“后退”按钮,再次加载提交的数据,然后重新按“提交”按钮 听起来很愚蠢,但我已经在这里呆了好几天了 提前感谢。这是由于各种浏览器的策略:“FireFox中的前向缓存”(backforwardcaching);“”在Safari等中,

首先,我想通知您,我是NodeJS的新手

我被要求在NodeJS中实现一个简单的应用程序。 因此,我创建了一个表单,通过POST方法提交其数据。 当检索和处理数据时,我呈现另一个页面,以便显示有关提交的数据和整个过程的结果的一些信息

我的问题是,用户可以从浏览器中单击“后退”按钮,再次加载提交的数据,然后重新按“提交”按钮

听起来很愚蠢,但我已经在这里呆了好几天了

提前感谢。

这是由于各种浏览器的策略:“FireFox中的前向缓存”(backforwardcaching);“”在Safari等中,它的实现是为了优化导航速度。本质上,它缓存整个页面的DOM,包括非HTTPS站点的表单元素。可以通过侦听加载页面的事件或从服务器使用以不缓存该页面来以编程方式清除表单元素(例如,
缓存控制:无缓存,最大年龄=0,必须重新验证,无存储

要为Express中的响应设置
缓存控制
标头,请使用响应对象的方法:

res.set('Cache-Control', 'no-cache, max-age=0, must-revalidate, no-store');

通过在表单中添加属性:autocomplete=“off”,我成功地解决了我的问题


谢谢您的回答。

如果我答对了,您希望在用户按下后退按钮时清除表单字段。如果是这样的话,请检查以下内容:谢谢您的详细回答。我放了一行:res.set('Cache-Control','no Cache,max age=0,必须重新验证,无存储');就在render命令之前,正如我在developer工具中看到的响应头一样,cache-control属性具有预期的值。然而,它似乎不起作用。。至少在我的情况下,我仍然可以单击后退按钮,并且可以访问发布的值。