地理位置 getCurrentPosition() 和 watchPosition() 不适用于不安全的来源

Posted

技术标签:

【中文标题】地理位置 getCurrentPosition() 和 watchPosition() 不适用于不安全的来源【英文标题】:Geo location getCurrentPosition() and watchPosition() not work on insecure origins 【发布时间】:2018-03-26 22:19:20 【问题描述】:

我需要使用 php 的用户的纬度和经度。试试下面的代码。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example of HTML5 Geolocation</title>
<script type="text/javascript">
    function showPosition()
        if(navigator.geolocation)
            navigator.geolocation.getCurrentPosition(function(position)
                var positionInfo = "Your current position is (" + "Latitude: " + position.coords.latitude + ", " + "Longitude: " + position.coords.longitude + ")";
                document.getElementById("result").innerHTML = positionInfo;
            );
         else
            alert("Sorry, your browser does not support HTML5 geolocation.");
        
    
</script>
</head>
<body>
    <div id="result">
        <!--Position information will be inserted here-->
    </div>
    <button type="button" onclick="showPosition();">Show Position</button>
</body>
</html>                            

但是当我在服务器中运行这段代码时,我在获取用户纬度和经度时发现了这个警告错误。

getCurrentPosition() 和 watchPosition() 不再适用于不安全 起源。要使用此功能,您应该考虑切换您的 应用到安全源,例如 HTTPS

而Same code works here..else 建议任何其他代码来获取用户纬度和经度。 谢谢。

【问题讨论】:

在 google chrome 中它在 https 上工作。你可以在Mozilla中检查它。 Mozilla 同时支持 http 和 https 在 Mozilla 开发者版中出现同样的错误。 “地理定位请求只能在安全的环境中完成。” 【参考方案1】:

从 Chrome 50 中的不安全来源中删除地理定位 API。

此更改自 Chrome 50(太平洋标准时间 2016 年 4 月 20 日中午 12 点)起生效。

Chrome 的开发者工具控制台自 44 版(2015 年 7 月 21 日发布)以来一直提供警告。 有许多公开声明描述了我们进行此更改的理由(和讨论):

打算弃用 HTTP 上的一组强大功能(2015 年 2 月) 打算弃用基于 HTTP 的 Geolocation API(2015 年 11 月) Chrome 开发者峰会(2016 年 11 月) Chrome Beta 频道发布博客(2016 年 3 月 17 日) Chrome 状态网站 还有许多其他来源强调了这一点:Mobiforge(2016 年 1 月 26 日)、Wired(2016 年 3 月 17 日)、VentureBeat(2016 年 4 月 13 日)。

Read More Documentatin here .所以没有 HTTPS 就无法使用 GeoLocation。

【讨论】:

以上是关于地理位置 getCurrentPosition() 和 watchPosition() 不适用于不安全的来源的主要内容,如果未能解决你的问题,请参考以下文章

getCurrentPosition 不更新位置

地理位置 getCurrentPosition() 和 watchPosition() 不适用于不安全的来源

无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置

位置值每隔几秒更改一次 - navigator.geolocation.getCurrentPosition

反应原生 - `Geolocation.getCurrentPosition` 返回“没有可用的位置提供程序”

navigator.geolocation.getCurrentPosition() 没有从 googleapi 得到响应