我有一个通过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中完美运行,并将其粘贴到我的网站上。那没起效。我仍然没有收到允许在我的网站上进行地理定位的提示。我已清除浏览器缓存并在“设置”中重置位置警告无效。
答案 0 :(得分:9)
我遇到了同样的问题,这是因为Chrome(和Safari)中Golocation API的新标准:
Chrome不再支持使用来自非安全连接提供的网页的HTML5地理位置API获取用户的位置。
唯一的解决方案是从HTTPS托管并删除第三方的所有HTTP请求。在开发人员模式下检查您的网络选项卡以过滤掉HTTP调用,这也包括图像(这在我的情况下是麻烦)。
您可以在此处阅读更多内容:Geolocation API Removed from Unsecured Origins。