Cookie 未在 Safari 中设置,ios 但在 ie,ff 中有效,chrome
Cookie not being set in Safari, ios but works in ie, ff, chrome
我被提醒,当使用 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。如果您转到产品,select 一个产品并将其添加到购物车,它不会在 safari 上添加 cookie,但会在其他浏览器上添加。
好的,经过更多的挖掘和试验和错误,这是 safari 不会在 iframe 跨域中设置 cookie 的问题。我在网上尝试了几个建议,包括这里,但它们要么不相关,要么不起作用(旧)。我发现我有两个选择。首先,将框架域更改为父 window 域的子域,我本可以这样做,但需要更改无数链接和我不想做的支付网关。第二种,分了几个步骤,但是效果很好的如下:
尝试设置 cookie 的页面检查它是否是 safari 浏览器,如果是,则将 window 位置更改为 php 脚本,该脚本来自与在获取变量,这又将 window 位置更改为来自 iframe 服务器的 asp 脚本,向其发送具有 cookie 设置代码的 cookie 信息,并在设置 cookie 后加载购物页面大车。
这里的关键是获取需要设置cookie的cookie设置页面到父window,然后加载新的目标页面。
这有几个步骤,但效果很好。
尝试使用HTML5本地存储概念实现safari浏览器中的cookie存储
默认的 safari 设置将为受信任的站点启用 Cookie,因此您必须启用设置以启用 cookie 存储...要解决此问题,您可以使用 HTML5 本地存储概念
我被提醒,当使用 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。如果您转到产品,select 一个产品并将其添加到购物车,它不会在 safari 上添加 cookie,但会在其他浏览器上添加。
好的,经过更多的挖掘和试验和错误,这是 safari 不会在 iframe 跨域中设置 cookie 的问题。我在网上尝试了几个建议,包括这里,但它们要么不相关,要么不起作用(旧)。我发现我有两个选择。首先,将框架域更改为父 window 域的子域,我本可以这样做,但需要更改无数链接和我不想做的支付网关。第二种,分了几个步骤,但是效果很好的如下: 尝试设置 cookie 的页面检查它是否是 safari 浏览器,如果是,则将 window 位置更改为 php 脚本,该脚本来自与在获取变量,这又将 window 位置更改为来自 iframe 服务器的 asp 脚本,向其发送具有 cookie 设置代码的 cookie 信息,并在设置 cookie 后加载购物页面大车。 这里的关键是获取需要设置cookie的cookie设置页面到父window,然后加载新的目标页面。
这有几个步骤,但效果很好。
尝试使用HTML5本地存储概念实现safari浏览器中的cookie存储
默认的 safari 设置将为受信任的站点启用 Cookie,因此您必须启用设置以启用 cookie 存储...要解决此问题,您可以使用 HTML5 本地存储概念