Origin无权使用Geolocation服务 - 即使通过HTTPS也是如此

时间:2017-05-08 20:38:57

标签: javascript html5 geolocation

我有一个通过HTTPS使用HTML5地理位置的网页。它在桌面浏览器上运行良好。但是,在iOS Safari上,我收到的错误是" Origin无权使用Geolocation服务"。我确保通过HTTPS加载页面上的所有内容 - 每个图片,每个脚本和所有其他资源都在Chrome开发工具中显示HTTPS。尽管如此,地理位置会返回错误。

这是我的一些JavaScript:

if ("geolocation" in navigator) {
    navigator.geolocation.getCurrentPosition(function (position) {
        // Do stuff with the geo data...
    }, function(error) {
        // I always end up here on iOS Safari.
        alert(error.code + ": " + error.message);
    });
} 
else {
    $("#search-results").append("Location is unavailable in this browser.");
}

我错过了什么?

更多信息:我刚从这个W3 Schools example抓取了代码,该代码在我的iOS Safari中完美运行,并将其粘贴到我的网站上。那没起效。我仍然没有收到允许在我的网站上进行地理定位的提示。我已清除浏览器缓存并在“设置”中重置位置警告无效。

1 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,这是因为Chrome(和Safari)中Golocation API的新标准:

  

Chrome不再支持使用来自非安全连接提供的网页的HTML5地理位置API获取用户的位置。

唯一的解决方案是从HTTPS托管并删除第三方的所有HTTP请求。在开发人员模式下检查您的网络选项卡以过滤掉HTTP调用,这也包括图像(这在我的情况下是麻烦)。

您可以在此处阅读更多内容:Geolocation API Removed from Unsecured Origins