10

我目前正在使用FlaskGoogle App Engine进行项目。get_flashed_messages()当我闪现一条消息然后使用 a 时,调用返回空redirect()

@views.route('/todo/add', methods=["POST"])
def add_todo():
    flash('hey')
    return redirect(url_for('todo_list')) 

但是,如果我注释掉

# SERVER_NAME = 'localhost'

那么它似乎工作正常。我的问题是我必须使用子域,所以我需要设置 SERVER_NAME。

什么是交易?

4

2 回答 2

10

我得到了它!诀窍是将服务器名称设置为带有点的名称。

所以 'localhost' 变成了 'app.local' 并且 app.local 应该被添加到 /etc/hosts,指向与 localhost 相同的地址。

文档

请记住,不仅 Flask 存在不知道子域是什么的问题,您的 Web 浏览器也存在这样的问题。大多数现代 Web 浏览器不允许在没有点的服务器名称上设置跨子域 cookie。因此,如果您的服务器名称是“localhost”,您将无法为“localhost”及其每个子域设置 cookie。在这种情况下,请选择不同的服务器名称,例如“myapplication.local”,然后将此名称 + 要使用的子域添加到主机配置中或设置本地绑定。

于 2011-06-01T23:10:48.970 回答
3

您是否设置了 cookie 以跨所有子域工作?

默认情况下,它们只能在设置它们的域上读取

于 2011-06-01T05:49:27.780 回答