Javascript Rails 5:由于与的连接不安全,对地理位置的访问被阻止http://localhost:3000

Javascript Rails 5:由于与的连接不安全,对地理位置的访问被阻止http://localhost:3000,javascript,ruby-on-rails,ruby,ruby-on-rails-4,safari,Javascript,Ruby On Rails,Ruby,Ruby On Rails 4,Safari,我正在为我的rails应用程序使用html5地理定位,但当我单击试用按钮时,以下错误出现在显示web检查器控制台下的safari浏览器控制台内: getLocation — localhost:83[blocked] Access to geolocation was blocked over insecure connection to http://localhost:3000. 代码如下: <button onclick="getLocation()">Try It</

我正在为我的rails应用程序使用html5地理定位,但当我单击
试用
按钮时,以下错误出现在
显示web检查器控制台下的
safari浏览器控制台内

getLocation — localhost:83[blocked] Access to geolocation was blocked over insecure connection to http://localhost:3000.
代码如下:

<button onclick="getLocation()">Try It</button>

<p id="demo"></p>

<script>
    var x = document.getElementById("demo");

    function getLocation() {
        if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
        } else {
            x.innerHTML = "Geolocation is not supported by this browser.";
        }
    }

    function showPosition(position) {
        x.innerHTML = "Latitude: " + position.coords.latitude +
            "<br>Longitude: " + position.coords.longitude;
    }
</script>
试试看

var x=document.getElementById(“演示”); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(showPosition); }否则{ x、 innerHTML=“此浏览器不支持地理位置。”; } } 功能显示位置(位置){ x、 innerHTML=“纬度:”+position.coords.Latitude+ “
经度:”+position.coords.Longitude; }
Safari(与Chrome和Firefox不同)不允许通过HTTP协议访问地理位置-仅限HTTPS。甚至对于localhost。非常感谢苹果

解决方案是在开发中使用另一个浏览器,或者通过HTTPS为Rails提供服务。您可以通过生成自签名证书并将Rails开发服务器(Webrick或Puma)设置为通过HTTPS提供服务来实现这一点

Rails 5默认为Puma,而早期版本使用Webrick

具体方法因操作系统和使用的服务器而异


谢谢您的帮助@max。。。我最终安装了firefox,它工作得很好!!!OMG noob苹果开发者。localhost永远不应该需要https,因为它是localhost。您也可以使用NGrok这样的隧道,它提供了SSLApple开发人员的体验。特别是在网上。