Cookie 的作用我想大家都知道,通俗地说就是当一个用户通过 HTTP 协议访问一个服务器的时候,这个服务器会将一些 Key/Value 键值对返回给客户端浏览器,并给这些数据加上一些限制条件,在条件符合时这个用户下次访问这个服务器的时候,数据又被完整地带回给服务器。
当前 Cookie 有两个版本:响应头的标识分别是 “Set-Cookie”和“Set-Cookie2”。Cookies版本0(有时被称为Netscape Cookies)和Cookies版本1(RFC2965)。
Version 0
属性项 | 属性项介绍 |
---|---|
NAME=VALUE | 键值对,可以设置要保存的 Key/Value,注意这里的 NAME 不能和其他属性项的名字一样 |
Expires | 过期时间,在设置的某个时间点后该 Cookie 就会失效,如 expires=Wednesday, 09-Nov-99 23:12:40 GMT |
Domain | 生成该 Cookie 的域名,如 domain="xulingbo.net" |
Path | 该 Cookie 是在当前的哪个路径下生成的,如 path=/wp-admin/ |
Secure | 如果设置了这个属性,那么只会在 SSH 连接时才会回传该 Cookie |
Version 1
NAME=VALUE | 与 Version 0 相同 |
Version | 通过 Set-Cookie2 设置的响应头创建必须符合 RFC2965 规范,如果通过 Set-Cookie 响应头设置,默认值为 0,如果要设置为 1,则该 Cookie 要遵循 RFC 2109 规范 |
Comment | 注释项,用户说明该 Cookie 有何用途 |
CommentURL | 服务器为此 Cookie 提供的 URI 注释 |
Discard | 是否在会话结束后丢弃该 Cookie 项,默认为 fasle |
Domain | 类似于 Version 0 |
Max-Age | 最大失效时间,与 Version 0 不同的是这里设置的是在多少秒后失效 |
Path | 类似于 Version 0 |
Port | 该 Cookie 在什么端口下可以回传服务端,如果有多个端口,以逗号隔开,如 Port="80,81,8080" |
Secure | 类似于 Version 0 |
格式:
可以有多个NAME/VALUE,用英文分号分隔开。如果有其他属性如path,也是键值对并且用分号分隔开。如Set-Cookie: NAME=VALUE; NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE。
用法如下:
需要用到javax.servlet.http.Cookie对象,这个对象支持version0和version1,只是个别属性没法设置。
HttpServletRequest request HttpServletResponse response Cookie cookie = new Cookie("cookiename","cookievalue"); cookie.setMaxAge(3600); response.addCookie(cookie);
其他的属性设置是类似的。想要获取cookie的话,如下:
Cookie[] cookies = request.getCookies(); for(Cookie cookie : cookies){ cookie.getName(); cookie.getValue(); }
时间: 2024-10-26 21:00:05