2010-03-23 53 views
2

我们遇到了一个令人讨厌的问题,即Firefox和Cookie。我们有以下的域:Cookie问题中的Firefox导致点

sub1.mydomain.com sub2.mydomain.com sub3.mydomain.com otherdomain.com

我们已经将我们的框架是多语种,并提供一个下拉到变化网站期间任何时候的语言。

代码库在上述所有域中共享。

我们无法在所有“mydomain.com”网站上设置cookie,它们必须位于每个子域中。为了实现这个功能,我们在用户选择一种新语言时设置一个JavaScript cookie。当页面回传给服务器时,代码会选择这一点,并将用户偏好设置为新的语言代码(这是所有C#和ASP.NET)。

我们必须将主机设置为“subX.mydomain.com”,并将Cookie中的路径设置为“/”,以便它仅用于子域和该域的所有部分。

这适用于除FireFox以外的所有浏览器。看来,Firefox将预先追加一个DOT到域名的开头,所以“.subX.mydomain.com”。

当代码回传给FireFox时,Cookie始终为空。

有没有人有这种情况,(我想这不是罕见的)。我已经阅读了很多人说,从cookie中删除域名,但这不能为我们工作,因为我们有多个子域名需要他们自己的cookie值。

编辑

var d = new Date(); 
d.setYear(d.getYear() + <%# CookieLangYearExpireOffset %>); 
document.cookie = '<%# CookieLangKey %>=' + langCode + '; expires=' + d.toUTCString() + '; domain=' + window.location.hostname + '; path=/';  
var currentUrl = location.href; 
var questionMarkIndex = currentUrl.lastIndexOf('?'); 
if (questionMarkIndex > 0) { 
    currentUrl = currentUrl + '&rand=' + Math.floor(Math.random() * 1001); 
} 
else { 
    currentUrl = currentUrl + '?rand=' + Math.floor(Math.random() * 1001); 
} 
window.location.href = currentUrl; 

服务器端代码部分只是使服务器端和客户端使用相同的到期价值和名称vaule。

谢谢

+0

你能发布你的JavaScript代码来设置cookie吗?这不应该发生。 – 2010-03-23 11:43:48

+0

这个JavaScript的'