跨域Cookie出现问题

时间:2018-07-24 07:19:42

标签: javascript cookies

我正在研究Shopify项目,并且创建了一个弹出窗口,该弹出窗口在页面加载后显示并要求用户在美国和英国网站之间进行选择。

一旦用户单击其中一个选项,弹出窗口就会关闭(英国)或重定向到美国站点。然后将其存储在cookie中,因此当他们再次访问该网站时,它们将被再次重定向/弹出窗口不再显示。

这是代码:

<div class="modal fade" id="storeModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-body">
        <div class="subscription-grid">
          <div class="grid__item">
            <button type="button" class="close" id="subscription-close" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">&times;</span>
            </button>
            <div class="store_popup_heading">
              <h2>TEXT</h2>
            </div>
            <div class="store_popup_content">
              <a href="#" class="store-btn" id="uk-store" onClick="checkCookie2();">text</a>
              <a href="#" class="store-btn" id="us-store" onClick="checkCookieUS();">text</a>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<script>
  function checkCookieUS() {
    Cookies.set('storelocation', 'true', {
      expires: 7
    });
    Cookies.set('storelocationUS', 'true', {
      expires: 7
    });
  }
</script>
<script>
  var delayInMilliseconds = 2000
  var storelocate = Cookies.get('storelocation');
  var storeUS = Cookies.get('storelocationUS');

  if (storelocate) {
    document.getElementById("storeModal").style.display = "none";
  } else {
    setTimeout(function() {
      document.getElementById("storeModal").style.display = "block";
    }, delayInMilliseconds);
  }

  if (storeUS) {
    window.location.href = "https://us.store.com/";
  }
</script>

现在这可行,但是我的问题是,美国站点上有一个链接,显示“返回英国站点”,因此,如果用户单击,则需要能够返回英国站点。但是,按照我当前的设置,他们进入英国网站后显然会重定向回美国网站。

所以我尝试设置另一个cookie和条件。因此,如果用户单击返回链接,则会设置此cookie,并且如果storechange one和storeUS cookie都存在,则应该删除storeUS cookie。

这是代码:

<script>
function checkCookieChange() {
Cookies.set('storelocationChange', 'true', { expires: 7 });
};
</script>
<script>
var delayInMilliseconds = 1000
var storelocate= Cookies.get('storelocation');
var storeUS= Cookies.get('storelocationUS');
var storeChange= Cookies.get('storelocationChange');
if (storelocate) {
  document.getElementById("storeModal").style.display = "none";
}
else {
  setTimeout(function() {
  document.getElementById("storeModal").style.display = "block";
  }, delayInMilliseconds);
}

if (storeUS){
  window.top.location.href = "https://us.store.com/" + window.location.pathname;
}
else if (storeUS && storeChange ) {
    $.removeCookie("storelocationUS");
}
</script>

现在,问题在于它确实设置了storeChange cookie,但仅在https://us.store.com/站点上设置了,因此显然,一旦用户被重定向到https://wwww.store.com/,它就不会注册该cookie。现场。 所以我的问题是-在这种情况下,是否可以为两个域设置storeChange cookie?还是有人可以想到一种更完美的方式?

0 个答案:

没有答案