Javascript/Rails Cookie不保存在Safari浏览器,但在Chrome浏览器上工作

问题描述:

我正在开发一个Rails应用程序(我是一名学生),我试图制作一个cookie来存储通过javascript地理位置API找到的用户位置。但是,Cookie在Chrome中完美工作,但不适用于Safari或Firefox。我看着检查员,cookie在那里是为了镀铬而不是其他两个。下面是cookie的代码。其余的代码是用ruby编写的。 cookie的要点是,我可以在控制器中获取用户最近的位置。Javascript/Rails Cookie不保存在Safari浏览器,但在Chrome浏览器上工作

<%if @lat_lng.nil? %> 

<script> 
getGeoLocation(); 

function getGeoLocation() { 
navigator.geolocation.getCurrentPosition(setGeoCookie); 
} 

function setGeoCookie(position) { 
    var expiration = new Date(); 
    expiration.setDate(expiration.getDate()+1); 
    var cookie_val = position.coords.latitude + "|" + position.coords.longitude; 
    document.cookie = "lat_lng=" + escape(cookie_val); expires= 'expiration.toGMTString()'; 
} 
</script> 
<% end %> 

该Cookie在我的应用程序控制器定义: @lat_lng = cookies[:lat_lng]

我真的很感谢所有帮助这是可能的!

当你设置cookie,它应该采用以下格式:

document.cookie = "some=value; expires=Mon, 1 Jan 2000 12:59:59 GMT"; 

在你的情况,你只是在JavaScript中定义一个变量。尝试将其更改为:

document.cookie = "lat_lng=" + escape(cookie_val) + "; expires=" + expiration.toGMTString(); 

PS。然而,expires部分是可选的,应该没有它就好了。也许,出于安全原因,Safari和FF需要它?尝试使用Google搜索。