1

これは私が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=/

それでも、[戻る] ボタンを押して元の URL に戻ると、ページのキャッシュ バージョンが表示されます。ページはサーバーから再取得されません。その結果、無効な隠しフォーム値が含まれています。ユーザーがどのようにフォームに入力しても、処理できません。

この問題は、Firefox と Chrome では再現できますが、Internet Explorer では再現できません。

では、Firefox と Chrome で強制的にキャッシュを無効にし、戻るボタンが押されるたびにページをリロードする方法は?

4

1 に答える 1

0

この問題を解決したかどうかはわかりませんが、昨夜同じ問題に直面しました。この答えはある程度私を助けました。ヘッダーを設定し、ユーザーの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('/')

「user」は Cookie セットの名前です。

于 2016-10-06T09:54:26.017 に答える