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

fnvucqvd  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(108)

我正在开发一个python flask应用程序用于练习。我想访问JS的getCurrentPosition()来获取地理位置。然而,由于应用程序在http://localhost:5000/上运行,我得到了一个错误,即getCurrentPosition()和watchPosition()在不安全的起源上被弃用
有没有一种方法可以在flask localhost服务器上工作?

b0zn9rqh

b0zn9rqh1#

我已经找到了解决方案。地理位置只能在HTTPS请求中使用。为了将localhost flask应用程序从HTTP转换为HTTPS,您必须使用OpenSSL创建密钥和证书。
按照以下步骤为flask localhost服务器设置HTTPS环境

  • 如果你已经安装了Git,那么OpenSSL命令会在一个包中。打开git bash,在那里你想存储文件。
  • 在Git Bash中运行下面的命令。

第一个月

  • 将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是指存储密钥和证书文件的位置目录。

drkbr07n

drkbr07n2#

让我感到困惑的是,文档似乎很少提到app.run()了。您也可以使用flask CLI设置密钥和证书。查看flask run --help以获取更多信息。
这篇文章解释了你可以用来运行flask的两种方法之间的区别:How to run a flask application?
编辑:
我还需要补充的是,自行生成的密钥和证书不会被浏览器识别为安全的,因此,Chrome不允许位置共享。您可以在线获得证书,或者在我的情况下,使用不同的浏览器进行测试(Safari工作得很好)。

相关问题