我正在设置cookie服务器端,使用java代码
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
有人可以解释为什么我会收到此错误?
答案 0 :(得分:1)
代码似乎有用(我在Firefox,Chrome和MSIE中测试它,通过使用JavaScript创建一些cookie,例如document.cookie = "test1=bla"
,并显示“required cookiebla”)。也许您从服务器设置的cookie被标记为HttpOnly
,因此JavaScript无法访问它?
答案 1 :(得分:1)
当我提交一个到不同路径的链接时,我遇到了类似的问题。即,我点击链接的页面是/pathOne/somePlace
,但链接转到了/pathTwo/someOtherPlace
。编写的cookie仅在/pathTwo/*
上有效。为了纠正这个问题,我做了:
Cookie testCookie = new Cookie("test1","test1");
testCookie.setPath (request.getContextPath ());
response.addCookie (testCookie);
希望有所帮助。