Cookie

Cookie的特性:

  • 首先分为3种cookie:
    1. 持久化cookie(persist cookie), 这种cookie有过期时间, 关掉浏览器还存在。
    2. 会话cookie(session cookie), 这种cookie没有过期时间,关掉浏览器就消失。
    3. 要被删除的cookie(deleted cookie). 这种cookie到达请求方就立即失效了。不会再带回服务器端。
  • Cookie的domain一定要对。例如发送给note.youdao.com的cookie, domain可以是.note.youdao.com, 可以是.youdao.com.但是最好是.note.youdao.com, 否则有可能给其他的应用带去不必要的cookie, 增大传输量。
  • Cookie的path一定要对,如果在生成cookie时没有指明,那就是那个页面的当前路径。例如note.youdao.com/web/x.html 生成了cookie, 那路径就是/web, 再访问note.youdao.com/时,这个cookie不会被带上。只有/web以及/web的子路径可以得到该cookie.所以一般cookie的path设置为"/".
  • Cookie是否是HTTP ONLY.这个对JS很重要。其实就是SET-COOKIE: header中加入了httponly的字段。但是HttpOnly的cookie, JS是拿不到的。在一定程度上保证安全。
  • 永久cookie是跨进程的。当然chrome做到session cookie也跨进程(跨chrome进程)。永久cookie可以跨所有的进程。例如客户端用A帐号访问,web端用B帐号访问。客户端的永久cookie会带到web访问中。
  • JAVA的HttpClient或者其他httpClient库发送cookie到server时不会带上HTTPOnly或者domain信息,因为他们只有对的domain才会发送cookie. 但是如果server要做抹除客户端cookie的事情,那就必须在返回消息中发送除cookie value和过期时间不一致,其他都要一致的cookie才行。否则达不到抹除的目的。

就先写到这里。