what happened when browser back/forward?


当一个form提交完成以后,点击浏览器的返回按钮,会发现form里的东西依然存在,页面没有刷新。

但是我在form里放了一个隐藏的token,用来防止csrf用的,这个token在页面back的时候,变了,变了。。。

不知道为什么。。。

chrome java 浏览器 JavaScript

能美科多缭卡 10 years, 9 months ago

1.关于token改变的问题

不同浏览器处理后退的一些异同

IE8点后退时会触发之前页面的window.onload事件,计数器回到初始状态重新计数;Opera9.6后退时不会触发前一个页面的window.onload事件,但定时器停止运行;其它浏览器后退时都不会触发前一个页面的window.onload事件,定时器会接着之前的状态继续计数。

于是我猜token改变是因为执行了onload事件。

2.关于form里的东西依然存在的问题

浏览器前进后退时表单状态的保持

Cache-Control取值有如下几个:public,private,no-cache,no-store,no-transform,must-revalidate,proxy-revalidate,max-age
Cache-Control属于http1.1范畴,主流浏览器都支持http1.1,但是貌似只有FF遵守"Cache-Control".

此外,下面提到了如何重置表单,顺便提了一下各浏览器对Cache-Control的响应状况。

不知道这两篇文章能不能解决你的疑问?
个人认为,针对表单这种东西,页面改变之后就应该清空了。。。。//因为我有个添加成员的页面,添加完成之后用的是后退而不是跳转,后来人家向我抱怨之后我才改的跳转/_\

今天天气不错 answered 10 years, 9 months ago

Your Answer