地理位置无法在移动设备上运行,但可以在我的桌面上运行
Posted
技术标签:
【中文标题】地理位置无法在移动设备上运行,但可以在我的桌面上运行【英文标题】:The geolocation isnt working on mobile but works on my desktop 【发布时间】:2019-06-15 18:06:55 【问题描述】:我正在尝试在我的项目中实现地理定位,我已经有了 api 和东西,所有必要的代码,但是在移动设备上,每当我尝试访问它只显示的位置时,谷歌地图上就会出现错误,说“错误:地理定位服务失败。”但在我的桌面上它工作正常。
期待在我的桌面上发生同样的事情,提示要求访问 gps 的权限,但没有任何反应
【问题讨论】:
欢迎来到 Stack Overflow。请edit问题并将文本图像替换为实际文本,然后使用格式作为代码按钮对其进行格式化。图片不可访问、不可搜索,并且在小屏幕上难以阅读。 【参考方案1】:@Pedro Teixeira - 如果您从 Web 服务器而不是本地 html 页面运行此应用程序。这就是为什么这对您不起作用。
如果您的网站不是 HTTPS 或至少您调用地理定位的页面不是 HTTPS,为什么地理定位不起作用? Chrome 公开有意弃用诸如基于非安全来源的地理定位等强大功能,我们希望其他人也能效仿。
从 Chrome 50 开始,Chrome 不再支持使用 HTML5 Geolocation API 从通过非安全连接传递的页面获取用户位置。这意味着进行 Geolocation API 调用的页面必须通过 HTTPS 等安全上下文提供服务。
这是一个重要的问题,因为它将直接影响任何需要使用地理定位 API 且不通过 https 提供服务的网站,但我们相信这是一个对网络上的所有用户都有益的变化。这篇文章应该可以帮助您理解其中的原因以及如何进行。
此更改何时生效? 此更改自 Chrome 50(太平洋标准时间 2016 年 4 月 20 日中午 12 点)起生效。
我们为什么要做出这种改变? 位置是敏感数据!需要 HTTPS 以保护用户位置数据的隐私。如果用户的位置可从非安全上下文中获得,则网络上的攻击者将能够知道该用户的位置。这严重损害了用户隐私。
这会影响谁? 这会影响当前通过 HTTP(非安全)提供的页面中使用 Geolocation API 的任何页面。如果嵌入在 HTTP 页面中,它还会影响使用 Geolocation API 的 HTTPS iframe。 (您将无法使用共享的 HTTPS 交付框架进行 polyfill。)
Google 开发者网站上的回复
如果您想使用 HTML5 Geolocation API,或者您的网站已经使用 Geolocation API,请将调用 Geolocation API 的页面迁移到 HTTPS,确保它们在安全的环境中使用。
有许多后备选项可用于获取不受此更改影响的用户位置,例如 Google Maps Geolocation API、GeoIP(例如,还有其他基于地理位置的解决方案)和用户输入的邮政编码。但是,我们强烈建议确保持续访问地理位置的最佳途径是迁移到 HTTPS。
请点击此链接了解更多信息 https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only
【讨论】:
以上是关于地理位置无法在移动设备上运行,但可以在我的桌面上运行的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Windows 桌面上运行 localhost 的移动设备上运行我的 Angular 站点[重复]
Javascript (Vue.js) 无法在移动设备和其他连接的设备中运行,但它可以在运行 localhost 的桌面上运行