这是我从Python / tornadoweb尝试过的:
self.set_header("Cache-Control","no-cache, must-revalidate, max-age=0")
self.set_header("Expires","Mon, 26 Jul 1997 05:00:00 GMT")
这是我第一次加载页面时从firebug中看到的内容:
Cache-Control no-cache, must-revalidate, max-age=0
Content-Length 1715
Content-Type text/html; charset=UTF-8
Etag "e55dc7115d80aa09b470510ababb3515706f4a61"
Expires Mon, 26 Jul 1997 05:00:00 GMT
Server TornadoServer/2.3
Set-Cookie xsfr=5b7f3cf86c2e4537acd1bb1749484a5b; Path=/
然而,当我按BACK按钮返回原始URL时,我得到了页面的缓存版本!不会从服务器重新获取该页面。结果是它包含无效的隐藏表单值。无论用户如何填写表单,都无法处理。
问题可以在firefox和chrome上重现,但不能从Internet Explorer中重现。
那么,如果按下后退按钮,如何强制firefox和chrome禁用缓存并重新加载页面?
答案 0 :(得分:0)
我不知道你是否解决了这个问题,但昨晚我遇到了同样的问题。 This回答在某种程度上帮助了我。我通过设置标头和清除用户cookie来解决它。
以下是我所做的一切:
class BaseHandler(tornado.web.RequestHandler):
def set_default_headers(self):
self.set_header('Cache-Control', 'no-cache, no-store, must-revalidate')
self.set_header('Pragma', 'no-cache')
self.set_header('Expires', '0')
现在是SignOut处理程序:
class SignOut(BaseHandler):
def get(self):
self.clear_cookie("user")
self.redirect('/')
"用户"是cookie集的名称。