地理位置 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() 和 watchPosition() 不适用于不安全的来源
无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置
位置值每隔几秒更改一次 - navigator.geolocation.getCurrentPosition
反应原生 - `Geolocation.getCurrentPosition` 返回“没有可用的位置提供程序”
navigator.geolocation.getCurrentPosition() 没有从 googleapi 得到响应