Flask 消息闪烁跨重定向失败
Posted
技术标签:
【中文标题】Flask 消息闪烁跨重定向失败【英文标题】:Flask message flashing fails across redirects 【发布时间】:2011-09-05 23:57:38 【问题描述】:我目前正在使用Flask 和Google App Engine 开展一个项目。当我闪现一条消息然后使用redirect()
时,调用get_flashed_messages()
返回空:
@views.route('/todo/add', methods=["POST"])
def add_todo():
flash('hey')
return redirect(url_for('todo_list'))
但是,如果我注释掉
# SERVER_NAME = 'localhost'
然后它似乎工作正常。我的问题是我必须使用子域,所以我需要设置 SERVER_NAME。
什么是交易?
【问题讨论】:
【参考方案1】:我明白了! 诀窍是将服务器名称设置为带有点的名称。
所以 'localhost' 变成了 'app.local' 并且 app.local 应该添加到 /etc/hosts 中,指向与 localhost 相同的地址。
来自docs:
请记住,不仅 Flask有不知道的问题 子域是什么,您的网络浏览器 也一样。大多数现代网络浏览器 不允许跨子域 cookie 在服务器名称上设置 点在里面。因此,如果您的服务器名称是 'localhost' 你将无法 为 'localhost' 和每一个设置一个 cookie 它的子域。请选择一个 在这种情况下,不同的服务器名称, 像'myapplication.local'并添加 这个名字+你想要的子域 用于您的主机配置或设置 本地绑定。
【讨论】:
我发现只要注释掉 SERVER_NAME 就可以了。我以前有SERVER_NAME = 127.0.0.1:5000
。
旁注,我需要在我的环境中将 .dev 更改为 .local。【参考方案2】:
您是否设置了 cookie 以跨所有子域工作?
默认情况下,它们仅在设置它们的域上可读
【讨论】:
感谢您的回复。知道怎么做吗?我看到你可以调用 set_cookie() 但我真的不知道我会在哪里这样做......flask.pocoo.org/docs/api/#response-objects以上是关于Flask 消息闪烁跨重定向失败的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 登录消息:“URL 被阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。”
Facebook 登录消息:“URL 被阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。”