Flask redirect()发送无效主机

时间:2017-04-19 21:30:03

标签: python redirect flask

我正在推出一个旧的Flask应用程序并尝试让它运行。但是,flask.redirect()给我带来了一些麻烦。这曾经在以前工作过,可能在最近的Flask版本中有所改变吗?

当我访问应用程序索引页面(/)时,由于索引视图上的/login装饰器(见下文),它应该将我重定向到requires_auth()。它确实重定向我,但主机不正确。我最终选择flux.example.com/login

,而不是以flux/login结尾
def requires_auth(func):
  ''' Decorator for view functions that require basic authentication. '''

  from .models import Session, User

  @functools.wraps(func)
  def wrapper(*args, **kwargs):
    app.logger.warn('Checking authentication ..')  # added for debug purposes just now
    app.logger.warn('Note: url_for(\'login\'): {}'.format(url_for('login')))
    user_name = session.get('user_name')
    user_passhash = session.get('user_passhash')
    with Session() as db_session:
      user = User.get_by(db_session, user_name, user_passhash)
      if not user:
        return redirect(url_for('login'))

    request.user = user
    return func(*args, **kwargs)

  return wrapper

这是响应标题:

Connection:keep-alive
Content-Length:219
Content-Type:text/html; charset=utf-8
Date:Wed, 19 Apr 2017 21:18:51 GMT
Location:http://flux/login
Server:nginx/1.6.2

在配置中设置SERVER_NAME=https://flux.example.com不起作用。实际上,整个应用程序都不再起作用,我访问的任何页面都有404。

如何修复此重定向问题?

Python 3.6,Flask 0.10.1

1 个答案:

答案 0 :(得分:0)

我认为你走在正确的轨道上,但你应该只使用没有协议的主机名:SERVER_NAME=flux.example.com