【问题标题】:Trouble with Flask's request.is_secure using gunicorn and heroku with FlaskFlask 的 request.is_secure 问题使用 gunicorn 和 heroku 与 Flask
【发布时间】:2014-09-14 21:04:39
【问题描述】:

我在网上看到过这个问题的讨论,但是解决这个问题的解释不是很清楚,尤其是如果你对 Flask 不是很熟悉的话。这是当烧瓶在 Heroku 上的 gunicorn 上运行时 request.is_secure 总是返回 False 的问题,即使请求是使用 HTTPS 完成的。我正在使用 Flask 0.8 和 gunicorn 19.0.0。

我找到了this 链接,看起来就像您使用这些内容创建了一个名为 gunicorn.py 的文件,但这只是在 Heroku 服务器上创建了一个导入错误。然后我尝试采用这些设置并将它们直接应用到我的app Flask 对象,方法是:

app.secure_proxy_ssl_header = ('HTTP_X_FORWARDED_PROTO', 'https')
app.forwarded_allow_ips = '*'
app.x_forwarded_for_header = 'X-FORWARDED-FOR'
app.secure_scheme_headers = {
'X-FORWARDED-PROTO': 'https',
}

但仍然没有骰子。有人可以清楚地解释我必须做什么以及将配置放在哪里吗?

【问题讨论】:

    标签: heroku flask gunicorn


    【解决方案1】:

    我知道你已经解决了你的问题,但我遇到了类似的问题,不得不在 Apache 中设置第二个 RequestHeader:

      ProxyPreserveHost On
      RequestHeader set X-Forwarded-Proto "https"
      RequestHeader set X-Scheme https
      Timeout 300
      ProxyTimeout 300
    

    这似乎奏效了。

    【讨论】:

      【解决方案2】:

      原来解决方案比我想象的要简单得多。我所要做的就是:

      from werkzeug.contrib.fixers import ProxyFix

      然后

      app.wsgi_app = ProxyFix(application.wsgi_app)

      【讨论】:

      • 应该是ProxyFix(app.wsgi_app) 而不是ProxyFix(application.wsgi_app)?
      猜你喜欢
      • 2016-11-20
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2021-06-24
      • 2023-03-28
      • 2016-03-02
      • 2013-01-12
      相关资源
      最近更新 更多