https 站点上的 HTML5 地理定位失败

Posted

技术标签:

【中文标题】https 站点上的 HTML5 地理定位失败【英文标题】:HTML5 Geolocation fails on https site 【发布时间】:2016-06-23 18:51:47 【问题描述】:

由于最近 Chrome 50 上的更改要求使用 https 进行 html5 地理定位,我们建议我们的一位客户将其网站迁移到 https。他们目前同时激活了 http 和 https。我们目前仍然可以在 http 站点上获取位置,但它在 https 站点上不起作用。为了在 https 站点上获取 GPS 坐标,是否需要在代码、服务器或设备上发生一些不同的事情?

客户在标准“互联网”浏览器上使用 android Samsung Galaxy S6。

我使用的代码非常简单。一点都不花哨。

function success(position)
        
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;

            output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>';


function error(error)
        
            output.innerHTML = "Unable to retrieve your location" + error.code + " - " + error.message
        ;

navigator.geolocation.getCurrentPosition(success, error);

【问题讨论】:

检查页面加载期间导入的所有库(例如任何 javascript 库)是否使用 https 地址。如果导入的 url 不是 https,则该页面将被视为仅部分受信任,这可能会导致您遇到的问题。在 Firefox 中,证书 url 栏上的锁将带有灰色标记。 Chrome 没有显示(我的版本) 就是这样,我在页面前面的外部 http javascript 文件上调用了 $.getScript。我下载了脚本并将其包含在我的脚本目录中,从而解决了问题。如果您将其复制到答案部分,我将很乐意接受您的答案。感谢您的回复。 【参考方案1】:

不能从https调用http,但是可以从https://freegeoip.net/json/

获取经纬度数据

【讨论】:

【参考方案2】:

如果您使用 https,则该页面的所有外部脚本链接或下载都必须使用 https,否则该页面将被视为“部分受信任”。在更高版本的 Firefox 中,如果出现这种情况,您会在位置栏中看到一个灰色符号以及正常的锁定符号。

【讨论】:

以上是关于https 站点上的 HTML5 地理定位失败的主要内容,如果未能解决你的问题,请参考以下文章

地理定位 video web存储

iPhone 上的 HTML5 地理定位问题

使用 phonegap eclipse 的 Android 的 HTML5 地理定位应用程序

HTML5 地理定位 iphone

HTML5 地理定位精度 Android 与 iOS 非常不同

如何使用HTML5地理位置定位功能