You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask本地服务应用无法调用getCurrentPosition()该如何解决?

Flask本地服务调用地理位置API的解决方法

现代浏览器为了保护用户隐私,要求getCurrentPosition()、watchPosition()这类地理位置相关API必须在HTTPS安全源下调用,仅本地调试场景可以通过以下方案豁免限制:

方法1:使用Flask内置临时HTTPS(最快适配)

Flask自带生成临时自签名证书的能力,仅需修改启动配置即可:

  • 如果你用命令行启动服务,将启动命令改为:
    flask run --ssl-key=adhoc
  • 如果你在代码中用app.run()启动,修改为以下写法:
    if __name__ == '__main__':
        app.run(ssl_context='adhoc')
    

启动后访问https://localhost:5000即可,首次访问浏览器会提示证书不安全,选择「继续前往」即可正常调试。

方法2:使用固定自签名证书

如果不想每次用临时证书,可以自己生成有效期更长的固定证书:

  • 首先用openssl工具生成证书和密钥文件,命令行执行:
    openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
    执行过程中所有提示项都可以随意填写。
  • 启动时指定证书路径即可,代码写法:
    if __name__ == '__main__':
        app.run(ssl_context=('cert.pem', 'key.pem'))
    
    命令行启动写法:
    flask run --cert=cert.pem --key=key.pem
    如果觉得证书不安全的提示麻烦,可以把生成的cert.pem导入到浏览器的受信任根证书列表中,就不会再弹出提示。

方法3:修改浏览器安全配置(无需改服务端)

如果不想用HTTPS协议,也可以给本地服务地址加浏览器安全豁免,以Chrome为例:

  • 地址栏输入chrome://flags/#unsafely-treat-insecure-origin-as-secure打开配置页
  • 找到Insecure origins treated as secure选项,切换为启用状态,在输入框中填入http://localhost:5000
  • 重启浏览器后配置生效,即可直接在HTTP源下调用地理位置API。

内容的提问来源于stack exchange,提问作者Ashis Sahoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:54:05