无论是在js中使用document.cookie
,还是在servlet
中使用cookie
,为什么只能获取name
和value
的值,其他的值获取不到?
js代码如下:
console.log(document.cookie);
var date = new Date();
date.setSeconds(date.getMinutes() + 30);
document.cookie = "falcult=software; expires=" + date.toGMTString() + ";path=/; " + document.cookie;
java代码如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
if(cookies != null){
for (Cookie cookie : cookies) {
System.out.print(cookie.getName() + ",");
System.out.print(cookie.getValue() + ", ");
System.out.print(cookie.getPath() + ", ");
System.out.print(cookie.getDomain() + ", ");
System.out.print(cookie.getMaxAge() + ", ");
System.out.println();
}
}
Cookie cookie1 = new Cookie("name", "DX");
cookie1.setMaxAge(1000*60);
cookie1.setPath("/");
Cookie cookie2 = new Cookie("age", "20");
response.addCookie(cookie1);
response.addCookie(cookie2);
request.getRequestDispatcher("test.html").forward(request, response);
}
js输出结果:
school=cqupt; age=20; name=DX
java输出结果:
age,20, null, null, -1,
school,cqupt, null, null, -1,
name,DX, null, null, -1,
server端只能获取到name和value不难解释,因为发请求的时候,cookie就只有name和value传递过去了。你可以看看请求的数据。
js也只能得到这两个值应该是浏览器只给js传递这两个值或什么标准要求只能传递这两个值吧,cookie存储在本地是以未见的形式,我查看了Cookie文件,并不是文本文件,是二进制文件,js是无法读取的。