Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
烧瓶故障';s request.u使用gunicorn和heroku以及烧瓶是否安全_Heroku_Flask_Gunicorn - Fatal编程技术网

烧瓶故障';s request.u使用gunicorn和heroku以及烧瓶是否安全

烧瓶故障';s request.u使用gunicorn和heroku以及烧瓶是否安全,heroku,flask,gunicorn,Heroku,Flask,Gunicorn,我在网上看到过这个问题的讨论,但是关于解决这个问题的解释并不十分清楚,特别是如果你对Flask不太熟悉的话。当flask在Heroku上的gunicorn上运行时,request.is_secure始终返回False,即使请求是通过HTTPS完成的,这也是一个问题。我用的是烧瓶0.8和gunicorn 19.0.0 我找到了链接,使它看起来像是你用这些内容创建了一个名为gunicorn.py的文件,但这只是在Heroku服务器上创建了一个导入错误。然后,我尝试通过执行以下操作,将这些设置直接应用

我在网上看到过这个问题的讨论,但是关于解决这个问题的解释并不十分清楚,特别是如果你对Flask不太熟悉的话。当flask在Heroku上的gunicorn上运行时,request.is_secure始终返回False,即使请求是通过HTTPS完成的,这也是一个问题。我用的是烧瓶0.8和gunicorn 19.0.0

我找到了链接,使它看起来像是你用这些内容创建了一个名为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',
}

但仍然没有骰子。有人能给我一个清晰的解释,我必须做什么,以及把配置放在哪里吗?

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

从werkzeug.contrib.fixers导入ProxyFix

然后


app.wsgi\u app=ProxyFix(application.wsgi\u app)

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

  ProxyPreserveHost On
  RequestHeader set X-Forwarded-Proto "https"
  RequestHeader set X-Scheme https
  Timeout 300
  ProxyTimeout 300
这似乎奏效了

它应该是
ProxyFix(app.wsgi\u app)
而不是
ProxyFix(application.wsgi\u app)