【问题标题】:cookies set by javascript not retrievable由 javascript 设置的 cookie 无法检索
【发布时间】:2016-09-14 02:02:23
【问题描述】:

我在 JS 中有这个脚本

function setCookie(name, value, days) {
  var d = new Date;
  d.setTime(d.getTime() + 24*60*60*1000*days);
  document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString();
}

我可以在我的 Chrome 浏览器选项->设置中看到设置了 cookie 名称“workLocation”。 cookie 的域是“/”,“发送”选项是“任何类型的连接”,“可访问脚本”选项是“是”。

当我使用下面的 JS 代码调用 cookie 时,它​​返回 null。

function getCookie(name) {
    var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
    return v ? v[2] : null;
}
alert(getCookie("workLocation"));

我曾尝试使用 PHP 显示 cookie var_dump($_COOKIE);但它只显示codeigniter cookie“ci_session”和“httpUser”。我使用相同的 javascript 来设置和获取 cookie,并且它正在工作,除了这个页面。任何想法如何解决它?

【问题讨论】:

    标签: javascript cookies codeigniter-3


    【解决方案1】:

    服务器和客户端的cookie不同,服务器的cookie存储在

    本地存储

    并且客户端中的cookie存储在

    Cookie

    如果你想从 js 获取 cookie,你可以使用这个函数:

    function getCookie(cname) {
        var name = cname + "=";
        var ca = document.cookie.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 user = getCookie("username");
        if (user != "") {
            alert("Welcome again " + user);
        } else {
            user = prompt("Please enter your name:", "");
            if (user != "" && user != null) {
                setCookie("username", user, 365);
            }
        }
    } 
    

    但是如果你想从 php 中获取 cookie,尤其是那些 CI 中的会话

    你可以使用这个命令$this-&gt;session-&gt;userdata("key");

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 2015-05-19
      • 2014-05-31
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2011-02-25
      • 1970-01-01
      相关资源
      最近更新 更多