【发布时间】:2015-01-30 23:17:54
【问题描述】:
我有一个 Flask 应用程序,其会话在我的本地开发机器上运行良好。但是,当我尝试在 Amazon 服务器上部署它时,会话似乎不起作用。
更具体地说,未设置会话 cookie。但是,我可以设置普通的 cookie。我确保我有一个静态安全密钥,因为其他人表示这可能是一个问题。唯一的区别在于服务器的设置方式。在开发过程中,我使用
app.run()
在本地运行。部署时,我使用
app.config['SERVER_NAME'] = '12.34.56.78' # <-- insert a "real" IP
app.run(host='0.0.0.0', port=80)
我怀疑问题可能出在上面,但不完全确定。
会话确实似乎在 Firefox 上有效,但在 Chrome 上无效。
以下小应用程序演示了该问题,底部有配置差异:
from flask import Flask, make_response, request, session
app = Flask(__name__)
app.secret_key = 'secretKey'
# this is to verify that cookies can be set
@app.route('/setcookie')
def set_cookie():
response = make_response('Cookie set')
response.set_cookie('cookie name', 'cookie value')
return response
@app.route('/getcookie')
def get_cookie():
if 'cookie name' in request.cookies:
return 'Cookie found. Its value is %s.' % request.cookies['cookie name']
else:
return 'Cookie not found'
# this is to check if sessions work
@app.route('/setsession')
def set_session():
session['session name'] = 'session value'
return 'Session set'
@app.route('/getsession')
def get_session():
if 'session name' in session:
return 'Session value is %s.' % session['session name']
else:
return 'Session value not found'
if __name__ == '__main__':
app.debug = True
# windows, local development
#app.run()
# Ubuntu
app.config['SERVER_NAME'] = '12.34.56.78' # <-- insert a "real" IP
app.run(host='0.0.0.0', port=80)
【问题讨论】:
标签: python session cookies flask