我在 CentOS 6.3 上运行 Python 2.7、Apache + mod_wsgi
当我在本地主机上时,一切正常。但是,当我在 Azure 中的虚拟机上运行代码时,我没有看到会话信息跨页面保存。
基本上在我看来,我有这样的想法:
@frontend.route('/')
def index():
session['foo'] = 'bar'
print session['foo']
return redirect(url_for("frontend.page2"))
@frontend.route('page2')
def page2():
print session
打印输出为:
bar
<SecureCookieSession {}>
我的 apache wsgi 配置是:
WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
ServerName example.com
ServerAlias example.com
WSGIDaemonProcess myproj threads=5 processes=5
WSGIScriptAlias / /home/mydir/myproj/apache/myproj.wsgi
<Directory /home/mydir/myproj>
WSGIScriptReloading On
WSGIProcessGroup myproj
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
我设置了 Secret_key:
app.secret_key = os.urandom(24)
我尝试过设置 SERVER_NAME 但没有帮助:
app.config['SERVER_NAME'] = 'example.com'
关于如何进一步调试这个的任何想法?
Thanks!
不要使用app.secret_key = os.urandom(24)
!
您应该在此处输入静态值,而不是从中读取os.urandom
每一次。您可能误解了示例中的内容docs,它向您展示了如何从中读取随机数据os.urandom
,但它也明确指出:
只需将其复制/粘贴到您的代码中即可完成
如果你在运行时读取它,那么你的每个工作进程都会有一个不同的密钥!这意味着如果请求由不同的工作人员处理,会话将会中断,因为 cookie 使用错误的密钥进行签名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)