Cookie 特点
部分(跨域需求时不可)可用DOM Storage替代(要手动发送),sessionStorage(标签级别,cookie是浏览器级别)和localStorage分别对应非持久型和持久型cookie。
cookie不能手动删除,只能添加过期时间。直接赋值会调用document对象cookie的setter。
随请求发送(服务端需允许),可以主域共享(端口算子域,小(受header的长度限制),每个站点最多存放20个,不超过4KB,时效性
Cookie有安全标志 指定后,cookie只有在使用SSL连接的时候才发送到服务器。
可以保存用户信息或者只保存客户端的 session_id(也可以附加在URL)然后由服务器检索session的信息使用。
响应头设置cookie:
Set-Cookie:user=xxxx; Path=/; Domain=.example.com
domain 不设置就指当前域名,尽管可能等于主域
js设置cookie直接修改document.cookie(不能像处理普通字符串一样处理他:直接复制名值对是添加cookie)
cookie 默认生命周期为session(这里意思的浏览器生存期间,而不是现在session所说的标签生存时间)
除了路径和域设置还有:
;max-age 有效时间
;expires 到期时间,修改系统时间会影响
;secure 只通过https协议传输
HttpOnly是的cookie 不能在浏览器中查看,而包含在请求中
子域可以设置主域cookie(没有安全隐患)
Cookie 如何泄漏隐私
即使你在 Gmail 中点了注销(logout),cookie 中还是会有你的用户信息。之后,你再用 Google 的搜索功能,那么 Google 就可以通过 cookie 中的信息,知道这些搜索请求是哪个 Gmail 用户发起的。
还可以用大数据分析出用户个人隐私(用户主动禁用第三方cookie)
Cookie 安全问题
CSRF 攻击(不过 url 操作数据还有其他问题,本身就不可取)