在Azure应用服务中,Flask应用程序的绝对URL重定向为HTTP而不是HTTPS。

3
我有一个Flask应用程序,部署到Azure应用服务。该应用服务具有由Azure应用服务管理的SSL证书。 它还启用了从应用服务的TSL / SSL设置仅使用https。
我有几个绝对重定向URL,这些URL从一个页面到另一个页面。我已经为这些类型的绝对URL设置了_scheme = https,如下所示:
url_for("authorized", _external=True, _scheme = 'https').

我还设置了app.config['PREFERRED_URL_SCHEME'] = 'https',但这似乎也不起作用。

如何在Azure应用服务中强制使用https设置Flask应用程序的绝对URL?有什么建议吗?

p.s 我遵循此教程https://github.com/AzureAD/microsoft-authentication-library-for-python,它在本地主机上工作时不需要https。但是,在使用appservices时,它无法创建https的绝对URL,因此到AzureAD的身份验证不成功。


你是否正在Linux应用服务上部署?如果是,请考虑使用这个反向代理解决方案。 - PGHE
它在Linux应用服务中。谢谢,我会尝试的。 - user96564
只是为了明确,这是来自@aldel的答案,而不是被接受的答案。 - PGHE
app.wsgi_app = ProxyFix(app.wsgi_app) 使用这个中间件解决了问题 :) - user96564
@user3280146 你可以添加一个答案。 - Tony Ju
1个回答

1

看起来使用ProxyFix是解决这个问题的方法。使用这个中间件后,我能够将绝对url重定向到https。

app.wsgi_app = ProxyFix(app.wsgi_app)

1
你能解释一下这段代码是做什么的吗?它看起来有点难以理解,我也不确定它会对我的代码产生什么其他影响。 - Zaffer
1
@Zaffer 这里可以找到它。https://werkzeug.palletsprojects.com/en/2.0.x/middleware/proxy_fix/ - user96564

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接