http://www.baidu.com 其中baidu.com是一个域名。那么http://localhost 中的localhost是不是域名呢?我百度过,发现有人说这是域名。于是我在自己的web项目中登录后这样添加cookie:
Cookie ck=new Cookie("bugTrackCookie",userName);
ck.setDomain("localhost"); //10.200.152.22
ck.setPath("/bugTrack");
response.setStatus(302);
response.addCookie(ck);
response.setHeader("location","./query.jsp");
结果每次调用这个servlet时我得到的cookie其name都不是bugTrackCookie。我当时还很疑惑,难道response的cookie传给浏览器后,浏览器再次发送的request的cookie怎么name和value都不一样?难道加密了?不应该啊。我试了几次。最后试着把setDomain和setPath去掉了。最后终于发现了我设置的cookie。通过这个问题,我学到了两点新知识:
1. 当你打开浏览器访问服务器,浏览器会自动生成一个cookie给服务器,这个cookie的value是32位的字符串。
2. localhost不是域名。其实通过api文档也能看到其实一般不需要设置域名,只要你在这个网站访问,你的cookie就还在。
“setDomain(String pattern)
zh_cn |
指定应在其中显示此 cookie 的域。
RFC 2109 指定了域名的形式。域名以点 (.foo.com
) 开头,意味着在指定域名系统(Domain Name System,DNS)区域中(例如,www.foo.com
,但不是 a.b.foo.com
)cookie 对于服务器是可见的。默认情况下,cookie 只返回给发送它们的服务器。”