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

mrc*_*son 6 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.");
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

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

Mat*_*ard 10

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

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

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

您可以在这里阅读更多内容:从不安全起源中删除的地理位置API.

  • 这是否也适用于本地主机,因为我在本地主机上遇到了同样的问题。我查看了文档,它明确指出 localhost 默认被认为是安全的。 (3认同)