python - flask url_for 生成 http URL 而不是 https

标签 python url-routing flask werkzeug

当用户退出时,我正在使用 url_for 生成重定向 URL:

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

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

我想明确要求 url_for 在 URL 的开头添加 https

你能告诉我如何改变它吗?我查看了 Flask 文档,没有运气。

最佳答案

使用 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。这类似于 mixed content .

关于python - flask url_for 生成 http URL 而不是 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14810795/

相关文章:

python - Django assertTemplateUsed() 使用 Jinja 模板抛出异常

python - PyArrow:使用嵌套类型在 Parquet 中存储字典列表

python - 在没有 Web 服务器的情况下将 Python 脚本运行到 Docker 中?

asp.net-mvc - 为什么在 asp.net mvc 中的公共(public)路由之前先映射特殊路由?

Django:创建/修改请求对象

python - db.create_all() 不在 Flask-SQLAlchemy 中创建表

python - 如何在 pandas df.query() 中使用循环变量

javascript - NodeJS Express 上的路由

python - 填充 html 表单时,Html 输入值不显示完整变量

python - 用关系数据库Flask-SQLAlchemy查询单表