我正在开发rails 5
应用程序并使用html5 geolocation
:
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
之外的所有浏览器上都能正常工作。在safari
上,allow pop up
不会出现。
我做了一些研究,发现Safari(不像Chrome和Firefox)不允许通过HTTP协议访问地理位置--只有HTTPS。即使是localhost。
解决方案是在开发中使用另一个浏览器,或者通过HTTPS提供Rails。
有人能给我一些关于如何在开发中通过HTTPS服务Rails的建议吗?
4条答案
按热度按时间o2gm4chl1#
通过https服务Rails最简单的方法是使用ngrok。它只是提供了一个到localhost的安全隧道。非常容易使用
2j4z5cfb2#
你也可以使用cloudflared https://github.com/cloudflare/cloudflared,它是免费的,没有ngrok的任何限制,比如必须经常改变域名。
qgelzfjb3#
尽管这个问题已经提出5年了,但我觉得我需要为将来遇到这个问题的人提供一些意见。我在使用Rails6和调用外部API时遇到过类似的问题,它只允许HTTPS连接。因此,经过一些研究,我发现最简单的解决方案是修改
puma.rb
文件,创建两个目录config/certs
和config/certs/.keep
,并更新gitignore。必须将以下内容添加到puma.rb
文件中:我也创建了一个gist on GitHub太。我会很感激,如果你星星的主旨,这样你就可以很容易地找到最新的版本,它在未来。
46qrfjad4#
您可以通过在
application.rb
中添加以下行,使Rails应用程序在HTTPS上运行或者像Nwocha建议的那样,您也可以使用ngrok。