Cookie没有在Safari中设置,ios但是在ie,ff,chrome中工作

时间:2015-01-13 16:04:32

标签: javascript safari mobile-safari

当我使用safari / ios将物品放入购物车时,我被警告,它们没有显示出来。购物车Cookie未设置。它由重定向页面设置。我看到有关safari没有设置cookie和重定向的问题,但如果我取出重定向,它仍然没有设置。这是代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<script type="text/javascript">window.onload= function() {
 SetCookie('RORDERID','OECLICK*17180*39521',10);
setTimeout("redir()",100);}
function redir(){window.location = 'http://www.shopthethirdfloor.com/forward-to-ttf-cart.html';}
function SetCookie(cookieName,cookieValue,nDays) {var today = new Date();var expire = new Date();
expire.setTime(today.getTime() + 3600000*24*nDays);
document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();}</script>
</head>
<body><br>If you are not redirected to the shopping cart, <a href="http://www.THESITE.com/forward-to-ttf-cart.html">click here</a></body></html>

我想也许setTimeout会允许它工作,但如果我取消对redir()的调用,它仍然不会设置cookie。

有什么建议吗?

附加说明:我找到了关于此的帖子,并将代码更新为:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<script type="text/javascript">window.onload= function() {
 setCookie2('RORDERID','OECLICK*17180*43',10,'','','');
//setTimeout("redir()",100);
}
function redir(){window.location = 'http://www.shopthethirdfloor.com/forward-to-ttf-cart.html';}
 function setCookie2 (name, value, nDays, path, domain, secure) {var today = new Date();var expires = new Date();
     expires.setTime(today.getTime() + 3600000*24*nDays);
     var curCookie = name + "=" + encodeURIComponent(value) + (expires ? "; expires=" + expires.toGMTString() : "") + (path ? "; path=" + path : "") + (domain ? "; domain=" + domain : "") + (secure ? "secure" : "");
     document.cookie = curCookie;}</script>
</head>
<body><br>If you are not redirected to the shopping cart, <a href="http://www.thesitename.com/forward-to-ttf-cart.html">click here</a></body></html>

它可以工作,但仍然无法在我的网站上运行。此代码在我网站上的其他域中的iframe中运行。该网站是www.shopthethirdfloor.com。如果您转到产品,选择一个产品并将其添加到购物车,它不会在Safari上添加cookie,但会在其他浏览器中添加。

2 个答案:

答案 0 :(得分:1)

好的,经过更多的挖掘和反复试验,这是safari不会在iframe跨域设置cookie的问题。我在网上尝试了几个建议,包括这里,但它们要么不相关,要么不起作用(过时)。我发现我有两个选择。首先,将框架域更改为我可以完成的父窗口域的子域,但是需要更改无法链接和我不想做的支付网关。第二步,采取了几个步骤,但工作优秀如下: 尝试设置cookie的页面检查它是否是Safari浏览器,如果是,则将窗口位置更改为与浏览器在get变量中传递cookie的浏览器相同的域中的php脚本,这反过来会更改从iframe服务器向asp脚本发送窗口位置,向其发送带有cookie设置代码的cookie信息,并在设置cookie后,加载购物车的页面。 这里的关键是获取cookie设置页面,该页面需要将cookie设置为父窗口,然后加载新的目标页面。

这有几个步骤,但效果很好。

答案 1 :(得分:1)

尝试使用HTML5本地存储概念在safari浏览器中实现cookie存储

默认的safari设置将为受信任的站点启用Cookie,因此您必须启用设置才能启用Cookie存储...要克服此问题,您可以使用HTML5本地存储概念