Python と Google App Engine を使用した Web アプリ開発に関する Udacity コースに取り組んでいます。Cookie の設定 (訪問者数をカウントするため) とハッシュ化に関するレッスン中に、混乱することに気付きました。
楽しみのために、さらに 1 回の訪問を追加する前後の「訪問」の Cookie 値を出力することにしました。出力は次のとおりです。
5|e4da3b7fbbce2345d7772b0674a318d5 [[[this is cookie before adding 1 to it]]
You've been here 6 times! [[this is printed after adding 1 to cookie, but is not the cookie]]
5|e4da3b7fbbce2345d7772b0674a318d5 [[this is printing the cookie after one has been set using "Set-Cookie"]]
真ん中の6が正解です。Cookie ビューアを使用して、Cookie と一致することを確認しました。したがって、最初の行の「5」も正しいです (この行は 1 が追加される前に Cookie を読み取っているため)。
私を混乱させているのは、1を追加した後にCookieの値も出力し、Cookieがすでに6にリセットされているにもかかわらず、まだ「5」を出力していることです.
何故ですか?新しい Cookie を正しく読み取る前に、ブラウザを更新する必要がありますか?
問題のコードは次のとおりです: class CookiePage(BlogHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' visits = 0 'visits') self.write(visits_cookie_str) # これは出力される最初の行です self.write("\n")
if visits_cookie_str:
cookie_val = check_secure_val(visits_cookie_str)
visits = int(cookie_val)
visits += 1
new_cookie_val = make_secure_val(str(visits))
self.response.headers.add_header('Set-Cookie', 'visits=%s' % new_cookie_val)
self.write("You've been here %s times!\n" % visits) # this is the 2nd line printed
cookie = self.request.cookies.get('visits')
self.write(cookie) # this is the 3rd line printed which SHOULD match the one above it but doesn't