2017-05-05 276 views
0

我正在開發一個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]

我真的很感謝所有幫助這是可能的!

回答

0

當你設置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搜索。

相關問題