0

我正在使用java代码设置cookie服务器端

response.addCookie("test1","test1");

我发现这段代码可以使用 javascript 检索 cookie

(function(){
    var cookies;

    function readCookie(name,c,C,i){
        if(cookies){ alert("all cookies"+cookies); return cookies[name]; }

        c = document.cookie.split('; ');
        cookies = {};

        for(i=c.length-1; i>=0; i--){
           C = c[i].split('=');
           cookies[C[0]] = C[1];
        }
        alert("required cookie"+cookies[name]);
        return cookies[name];
    }

    window.readCookie = readCookie; // or expose it however you want
})();

我将此函数称为

alert(readCookie('test1'));

但每次我收到未定义的警报时。我检查了 chrome 的 cookie 文件,我的 cookie 设置为

localhosttest1test1/service/login

有人可以解释为什么我会收到此错误吗?

4

2 回答 2

1

该代码似乎有效(我在 Firefox、Chrome 和 MSIE 中对其进行了测试,方法是使用 JavaScript 创建一些 cookie,例如,document.cookie = "test1=bla"它显示“必需的 cookiebla”)。也许您从服务器设置的 cookie 标记为HttpOnly,因此 JavaScript 无法访问它?

于 2013-04-04T11:23:46.040 回答
1

当我提交指向不同路径的链接时,我遇到了类似的问题。即,我单击链接的页面是/pathOne/somePlace,但链接去了/pathTwo/someOtherPlace。写入的 cookie 仅在/pathTwo/*. 为了纠正这一点,我做了:

Cookie testCookie = new Cookie("test1","test1");
testCookie.setPath (request.getContextPath ());
response.addCookie (testCookie);

希望有帮助。

于 2013-12-09T21:02:42.643 回答