【发布时间】:2020-08-04 15:49:56
【问题描述】:
我正在尝试通过navigator.geolocation.getCurrentPosition 访问我手机的地理位置,方法是通过本地 IPv4 地址连接到本地计算机上托管的网站。问题是,从我的手机运行代码时,我收到错误“Origin 无权使用地理位置服务”。经过研究,我相信我的手机阻止了该浏览器方法,因为我没有通过 HTTPS 或 localhost 访问我的本地网站。
有人知道我可以在本地进行测试吗?我是否必须将开发中的代码发布到使用 HTTPS 的 Web 服务器来进行测试?
任何帮助将不胜感激。提前致谢!
【问题讨论】:
-
开始认为我只是在泡菜哈哈!我可能不得不求助于将它上传到像 Heroku 这样的服务器,但是我也需要担心弄清楚我的数据库......
-
您可以使用
http-serverNPM 包轻松运行本地 HTTPS 服务器。您只需在与您的站点相同的目录中使用openssl生成您自己的证书,它可以在您本地网站的目录中使用http-server -S -C cert.pem -o -p 80,尽管我怀疑这是问题所在。您是否有任何其他资源通过该页面中的单个 HTTP 提供服务?您应该创建一个仅包含geolocation.getCurrentPosition代码的简单页面,以便对其进行测试。如果您愿意,我可以提供创建它的步骤。 -
您当前使用的是哪个本地服务器,Apache?您甚至可以创建自己的证书,并启用该本地服务器使用该证书通过 HTTPS 为站点提供服务。该站点将被 Chrome 标记为不安全,因为您将拥有一个自签名证书,但这不会影响 Geolocation API 的使用,您应该能够对其进行测试。即使使用自签名证书,我在本地服务器使用 HTTPS 服务的 Chrome 桌面/移动设备上测试 Geolocation API 时也没有任何问题。
-
@ChristosLytras 你能把这个作为答案发布吗?在您的回复和stackoverflow.com/questions/21397809/… 之间,我能够做到这一点。
-
很高兴你有这个工作达里尔。我已经给出了答案。检查一下,如果需要,甚至可以进行任何更改。