在浏览器中cookie包含跨域
Name | Value |
Domain | Path |
Expires/Max-Age | Size | HttpOnly | Secure | SameSite |
---|---|---|---|---|---|---|---|---|
名称 | 值 | 生成该 Cookie 的域名 |
该 Cookie 是在当前的哪一个路径下生成的 |
过时时间,在设置的某个时间点后该 Cookie 就会失效 |
字段 此cookie大小。 |
字段 cookie的httponly属性。若此属性为true,则只有在http请求头中会带有此cookie的信息,而不能经过document.cookie来访问此cookie。 |
若是设置了这个属性,那么只会在 SSH 链接时才会回传该 Cookie |
该属性用来设置Cookie的有效期。Cookie中的maxAge用来表示该属性,单位为秒。Cookie中经过getMaxAge()和setMaxAge(int maxAge)来读写该属性。maxAge有3种值,分别为正数,负数和0。浏览器
若是maxAge属性为正数,则表示该Cookie会在maxAge秒以后自动失效。浏览器会将maxAge为正数的Cookie持久化,即写到对应的Cookie文件中(每一个浏览器存储的位置不一致)。不管客户关闭了浏览器仍是电脑,只要还在maxAge秒以前,登陆网站时该Cookie仍然有效。下面代码中的Cookie信息将永远有效。安全
当maxAge属性为负数,则表示该Cookie只是一个临时Cookie,不会被持久化,仅在本浏览器窗口或者本窗口打开的子窗口中有效,关闭浏览器后该Cookie当即失效。cookie
修改或者删除Cookiedom
HttpServletResponse提供的Cookie操做只有一个addCookie(Cookie cookie),因此想要修改Cookie只能使用一个同名的Cookie来覆盖原先的Cookie。若是要删除某个Cookie,则只须要新建一个同名的Cookie,并将maxAge设置为0,并覆盖原来的Cookie便可。网站
新建的Cookie,除了value、maxAge以外的属性,好比name、path、domain都必须与原来的一致才能达到修改或者删除的效果。不然,浏览器将视为两个不一样的Cookie不予覆盖。get
值得注意的是,从客户端读取Cookie时,包括maxAge在内的其余属性都是不可读的,也不会被提交。浏览器提交Cookie时只会提交name和value属性,maxAge属性只被浏览器用来判断Cookie是否过时,而不能用服务端来判断。域名
咱们没法在服务端经过cookie.getMaxAge()来判断该cookie是否过时,maxAge只是一个只读属性,值永远为-1。当cookie过时时,浏览器在与后台交互时会自动筛选过时cookie,过时了的cookie就不会被携带了。it
Cookie的域名table
Cookie是不能够跨域名的,隐私安全机制禁止网站非法获取其余网站的Cookie。
正常状况下,同一个一级域名下的两个二级域名也不能交互使用Cookie,好比test1.mcrwayfun.com和test2.mcrwayfun.com,由于两者的域名不彻底相同。若是想要mcrwayfun.com名下的二级域名均可以使用该Cookie,须要设置Cookie的domain参数为.mcrwayfun.com,这样使用test1.mcrwayfun.com和test2.mcrwayfun.com就能访问同一个cookie
path属性决定容许访问Cookie的路径。好比,设置为"/"表示容许全部路径均可以使用Cookie