1
回答
H5的geolocation api要求正在悄悄发生变化
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

这是最近才发现的一个问题,有部分手机用户反馈无法在我们的地图上边进行定位(网页地图,前端使用的是H5的Geolocation API获取地理位置和方向信息)。

一开始我以为是授权问题,因为H5的API调用的其实也就是手机的定位信息,那是需要授权的,在调用API时手机会弹出类似“是否允许获取定位信息”的对话窗,用户必须点击允许后H5的页面才能获得授权返回定位。

后来经过调试后我才发现,浏览器压根就没弹出对话窗,我在调用geolocation api的失败回调方法中,发现是错误事件的提示信息是说geolocation api必须在安全的域名下调用,谷歌了一下,才发现还真有这么一回事 https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only

上边连接里说的是从chrome 50开始,地理信息API将必须在https的域名下调用(经过我们测试,从iOS 10开始,内置的safari浏览器也是这样,我想这就是浏览器业界慢慢全面向https过渡的意思吧?)

既然只是要求https,那好办,我马上申请了个免费证书(还是新的sha256签名,不是要准备不支持的sha1),把页面地址改成https,继续访问……还是不行,调用定位时仍然失败,异常信息却变了,说我没权限。这问题弄了我好久,最后发现是地图前端调用的地图服务后端仍然是http的地址,把地图服务也升级为https后就正常了  T T 

<无标签>
举报
Kit_lee
发帖于8个月前 1回/126阅
顶部