的Rails:localhost更改:3000到https://

问题描述:

我发展我和使用我rails 5应用的html5 geolocation的Rails:localhost更改:3000到https://

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

function setGeoCookie(position) { 
    var cookie_val = position.coords.latitude + "|" + position.coords.longitude; 
    document.cookie = "lat_lng=" + escape(cookie_val); 
} 

它的正常工作与firefox和除safari所有的浏览器。与safariallow pop up不出现。

我做了一些研究,发现..... Safari(不像Chrome和Firefox)不允许通过HTTP协议访问地理位置 - 只有HTTPS。即使是本地主机。

解决方案是在开发中使用其他浏览器或通过HTTPS提供Rails服务。

有人可以给我指示如何在开发中通过HTTPS提供Rails吗?

+0

在我看来,简单地使用其他浏览器是最简单的选择。 –

+0

是的,我同意@Sergio Tulentsev!唯一的问题是,当我部署它时它会与safari一起工作吗?因为我现在无法测试它! – Theopap

+0

这取决于您的操作系统和设置。特别是你使用的是什么Rails服务器。基本上你必须创建一个自签名证书(PEM)并将其信任在操作系统中。 https://gist.github.com/tadast/9932075 – max

通过https服务Rails的最简单方法是使用ngrok。它只是提供了一个到localhost的安全隧道。极易在application.rb

config.force_ssl = true 

或者作为Nwocha建议你可以如用ngrok使用

你可以让你的Rails应用程序上运行的HTTPS通过添加以下行。