繁体   English   中英

基于cookie的存在的JavaScript重定向

[英]JavaScript redirect based on presence of cookie

我正在尝试建立一个系统,当用户登陆特定页面时,会创建一个cookie。

例如:如果用户转到.com / jp / a3,则会创建一个cookie。

我正在使用此代码来创建cookie,它似乎是在该页面上创建cookie。

<script>
  document.cookie = "name_of_cookie=a3; expires=31 Dec 2017 12:00:00 UTC; path=/"
</script>

我目前创建了.com / jp / a1到.com / jp / a3页面。 因此有可能创建三个cookie。

用户下次访问后,我希望浏览器检查这些Cookie,并在用户访问正常着陆页时重定向回该页面。 如果用户访问过多个页面,我希望将优先级设置为他们首先访问的页面。 (这可能涉及将一些if else语句编码到我的javascript中以设置我假设的cookie?)如果这很困难,我可以通过a1-a3列表作为具有最高优先级的a1和a3最低的a1。

我已经尝试将以下代码添加到我的website.com/index.html文件中,但我没有运气。

<script>
  function getCookie(cname) {
    var name = name_of_cookie + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
  }

  function checkCookie() {
    var redirect = getCookie("name_of_cookie");
    if (redirect != "") {
        window.location = "http://www.website.com/jp/" + redirect;
    } else {
       window.location = "http://www.website.com/" 
    }
  }

  checkCookie();
</script>

我认为我可能面临的一个问题是,当我在a3.com页面上时,我能够在我的存储中看到cookie,但是,当我进入我的index.html页面时,我无法看到我的存储空间中的cookie。 我已将路径设置为/,这只会使.com / jp /子文件夹中的cookie可用,还是应该可以在.com / index.html页面上访问?

提前感谢您提供任何帮助。

您似乎将getCookie函数定义为错误。 测试时,我得到错误name_of_cookie is not defined 似乎在你的getCookie()函数的第一行,你使用name_of_cookie而不是cname来定义参数getCookie(cname)

您所要做的就是将其更改为

var name = cname + "=";

此外,通过将路径指定为/您也应该能够从索引中查看cookie。

简单的错误!

我在第二行忘记了name_of_cookie周围的引文。

更正的答案是:

<script>
  function getCookie(cname) {
    var name = "name_of_cookie" + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
  }

  function checkCookie() {
    var redirect = getCookie("name_of_cookie");
    if (redirect != "") {
        window.location = "http://www.website.com/jp/" + redirect;
    } else {
       window.location = "http://www.website.com/" 
    }
  }

  checkCookie();
</script>

感谢大家的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM