无法在 Flask 本地主机应用程序中使用 getCurrentPosition()

问题描述 投票:0回答:2

我正在开发一个Python Flask应用程序来进行练习。我想访问JS的getCurrentPosition()来获取地理位置。但是,当应用程序在 http://localhost:5000/ 上运行时,我收到一个错误,指出 getCurrentPosition() 和 watchPosition() 在不安全的来源上已被弃用

有没有办法让它在 Flask 本地主机服务器上工作?

javascript flask geolocation
2个回答
0
投票

我找到了解决办法。地理定位只能在 HTTPS 请求中使用。 为了将 localhost Flask 应用从 HTTP 转换为 HTTPS,您必须使用 OpenSSL 创建密钥和证书。

按照以下步骤为 Flask localhost 服务器设置 HTTPS 环境

  • 如果您已经安装了 Git,则 OpenSSL 命令会包含在一个包中。在您想要存储文件的位置打开 git bash。
  • 在 Git Bash 中运行以下命令。

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

  • 将 python 脚本中的 app.run() 方法更改为下面的
context = (r"{path}\certificate.pem", r"{path}\key.pem")
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=5000,debug=True,ssl_context=context)

path是指存放密钥和证书文件的位置目录。


0
投票

令我困惑的是,文档似乎很少再提及

app.run()
了。您还可以使用 Flask CLI 设置密钥和证书。检查
flask run --help
了解更多信息。

这篇文章解释了不同方法的工作原理如何运行 Flask 应用程序?

© www.soinside.com 2019 - 2024. All rights reserved.