服务器返回一个页面,该页面有一个隐藏的输入,其中包含一些一次性 CSRF token ,用于将来的 AJAX 请求。 .onload
处理程序解析这些标记并删除了 <input>
.当此人导航到外部网站然后使用“后退”按钮返回到上一页时,就会出现问题。浏览器使用页面的缓存版本,其中包含 <input>
带有 token ,可能已经用完了。在提出请求之前,我无法检查这一点。
有没有一种可靠的方法,将一些数据传递到 JavaScript 变量中,即使用户单击“后退”按钮进入页面,它也将保证只执行一次?
我能想到的唯一解决方案是在页面加载时异步请求这些 token ,但是当大量压缩内容被压缩时,为几个短字符串往返于服务器毫无意义无论如何都会发送给用户。
最佳答案
您可以尝试使用隐藏的表单
,因为浏览器会保留表单数据,然后使用 js 嗅探表单以检查页面是否“脏”。
这个答案中有一个很好的例子:https://stackoverflow.com/a/5642600/1759514
关于javascript - 当人们点击后退按钮时,如何防止浏览器执行一些 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30688919/