基于cookie的存在的JavaScript重定向

时间:2017-04-26 16:35:16

标签: javascript

我正在尝试建立一个系统,当用户登陆特定页面时会创建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页面上访问?

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

2 个答案:

答案 0 :(得分:0)

您似乎错误地定义了getCookie函数。在测试时,我得到了错误name_of_cookie is not defined。您的getCookie()函数的第一行似乎在您定义参数name_of_cookie

时使用了cname而不是getCookie(cname)

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

var name = cname + "=";

此外,通过将路径指定为/,您也应该能够看到索引中的Cookie。

答案 1 :(得分:0)

简单的错误!

我在第二行忘记了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>

感谢大家的帮助!