【问题标题】:Heroku Python: What is the proper way to set and get cookies?Heroku Python:设置和获取 cookie 的正确方法是什么?
【发布时间】:2013-02-17 14:15:55
【问题描述】:

我见过很多设置方式:

# store in a cookie
cookie = Cookie.SimpleCookie()
cookie['lat'] = lat
cookie['lon'] = lon
# expires in one hour
cookie['lat']['expires'] = time.time() + 1 * 24 * 3600 
cookie['lon']['expires'] = time.time() + 1 * 24 * 3600 
print cookie

并检查如下:

cookie = Cookie.SimpleCookie()
cookie.load(os.environ.get('HTTP_COOKIE'))
lat = float(cookie['lat'].value)
lon = float(cookie['lon'].value)

但它们似乎都不能在我的本地主机上工作。这是我的代码的功能还是在本地主机上。我以前没有做过很多带 cookie 的开发工作,而且我真的不知道存储用户登录数据和我的应用程序数据等内容的正确方法。

【问题讨论】:

  • 将用户的地理位置存储到 cookie 是一个严重的隐私问题!您是否意识到他们的纬度/经度将随着来自您的网络服务器的每个页面请求通过公共网络来回发送?将数据加密或使用密钥将其存储在服务器上可能会更好。
  • 是的,我知道,但目前将其存储在 cookie 中进行测试要容易得多。

标签: python cookies heroku localhost


【解决方案1】:

您将 os.environ 与当前请求的环境混淆了。它们是完全不同的东西。 os environ 是您机器的本地环境,它与网络服务器无关。

对于您正在寻找的环境,当它处理请求时,您需要在网络服务器内部。

也许这会有所帮助:http://en.wikipedia.org/wiki/Http_request#Technical_overview

【讨论】:

  • 是的,我对它们的工作方式有点困惑。我想我在回答中回答了我自己的问题。感谢您的文章!
【解决方案2】:

通过 url 重定向解决了这个问题:

from flask import make_response, redirect, url_for

response = make_response(redirect('/'))

lat = request.form['lat']
lon = request.form['lon']
response.set_cookie('lat', lat)
response.set_cookie('lon', lon)

return response

这是获取cookie的方法:

lat = float(request.cookies['lat'])
lon = float(request.cookies['lon'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2017-12-17
    • 2010-09-20
    • 2012-08-02
    • 1970-01-01
    • 2021-12-06
    • 2012-03-18
    相关资源
    最近更新 更多