从cookie的setDomain方法可以得知localhost不是域名

时间:2022-09-24 09:02:08

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 只返回给发送它们的服务器。”