一尘不染

flaskurl_用于生成HTTP URL而不是https

flask

url_for用户注销后,我用于生成重定向URL:

return redirect(url_for('.index', _external=True))

但是,当我将页面更改为https连接时,url_for仍然给我http。

我想明确地要求在网址开头url_for添加https。

你能指出我该如何更改吗?我看了看Flask文档,没有运气。


阅读 433

收藏
2020-04-05

共1个答案

一尘不染

使用Flask 0.10,将提供比包装更好的解决方案url_for。如果你查看https://github.com/mitsuhiko/flask/commit/b5069d07a24a3c3a54fb056aa6f4076a0e7088c7,则会_scheme添加一个参数。这意味着你可以执行以下操作:

url_for('secure_thingy',
        _external=True,
        _scheme='https',
        viewarg1=1, ...)

_scheme设置URL方案,生成https://..而不是的URL http://。但是,默认情况下,Flask仅生成路径(不包含主机或方案),因此你需要包括_external=True/secure_thingy到的路径https://example.com/secure_thingy

但是,请考虑将你的网站改为仅使用HTTPS。似乎你只想对部分“安全”路由部分实施HTTPS,但如果未加密链接到安全页面的页面,则无法确保不更改https-URL。

2020-04-05