gpt4 book ai didi

python - 是否需要刷新浏览器才能看到新的 cookie?我注意到的令人困惑的问题

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:54 24 4
gpt4 key购买 nike

我正在学习 Udacity 的有关使用 Python 和 Google App Engine 进行 Web 应用程序开发的类(class)。在关于设置 cookie(计算访问者数量)和散列的类(class)中,我注意到一些让我困惑的事情:

为了好玩,我决定在添加 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 值,但它仍然打印“5”——即使 cookie 已经重置为 6。

这是为什么呢?是否需要刷新浏览器才能正确读取新的cookie什么的?

这是有问题的代码: 类 CookiePage(BlogHandler): def get(自身): self.response.headers['内容类型'] = '文本/纯文本' 访问次数 = 0 Visits_cookie_str = self.request.cookies.get('访问') 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

最佳答案

Cookie 存储在浏览器发出请求时发送的 header 中,如果您在服务器上设置了 Cookie,则该 Cookie 的值通常在下一个请求之前才可用浏览器看到它并可以发送新的 header 值后。

更新

看了你的代码后,我描述的情况确实是正在发生的情况。您在响应中设置一个 header ,该 header 将发送回客户端以设置 cookie。但是,在请求处理完成之前,客户端不会看到此 cookie。 self.request 将不会更新,因为它反射(reflect)了在设置 cookie 之前正在处理的当前请求。

如果您想在请求期间跟踪该值,则必须将其存储在某处的变量中。

关于python - 是否需要刷新浏览器才能看到新的 cookie?我注意到的令人困惑的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19316987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com