Cookie不是在Safari,ios中设置的,而是在ie,ff,chrome中工作

Cookie not being set in Safari, ios but works in ie, ff, chrome

本文关键字:ie ff chrome 工作 设置 Safari ios Cookie      更新时间:2023-09-26

我被提醒说,当物品使用safari/ios放入我们的购物车时,它们不会显示。 未设置购物车 Cookie。 它由重定向页面设置。 我看到了有关野生动物园未设置 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,但会添加其他浏览器。

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

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

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

默认的野生动物园设置将是 Cookie 启用受信任的站点,因此您必须启用设置以启用 cookie 存储...要克服这个问题,您可以使用HTML5本地存储概念