【问题标题】:Cookie not being set in Safari, ios but works in ie, ff, chromeCookie 未在 Safari、ios 中设置,但适用于 ie、ff、chrome
【发布时间】:2015-01-13 16:04:31
【问题描述】:

我收到警报,当使用 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,但会在其他浏览器上添加。

【问题讨论】:

    标签: javascript safari mobile-safari


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2015-08-11
        • 2013-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多