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搜索。