cookie设计理念:有些开发者借助请求中的ip头部来唯一标识发出此次请求的客户端,但是这种方式存在很多问题,因为只有在http中请求中携带的信息才能用来标识客户端,所以在请求中必须包含某种可以用来标识客户端唯一身份的信息。Cookie设计出来就是用来解决这一问题的。
cookies理解:其实本质上cookies就是http的一个扩展。http头部是专门负责设置以及发送cookie的是:Set-Cookie以及Cookie
当服务器返回给客户端一个http响应信息时,其中如果包含Set-Cookie这个头部时,意思就是指示客户端建立一个cookie,并且在后续的http请求中自动发送这个cookie到服务器端,直到这个cookie过期。
cookie的存储两种方式
1.如果cookie的生存时间是整个会话期间的话,那么浏览器会将cookie保存在内存中,浏览器关闭时就会自动清除这个cookie。
2.另外一种情况就是保存在客户端的硬盘中,浏览器关闭的话,该cookie也不会被清除,下次打开浏览器访问对应网站时,这个cookie就会自动再次发送到服务器端。
一个cookie的设置以及发送过程分为以下四步:
客户端发送一个http请求到服务器端
服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
客户端发送一个http请求到服务器端,其中包含Cookie头部
服务器端发送一个http响应到客户端
这个通讯过程也可以用以下下示意图来描述:
在客户端的第二次请求中包含的Cookie头部中,提供给了服务器端可以用来唯一标识客户端身份的信息
cookie参数详解:
每一条cookie都需要有Set-Cookie头来设置,向浏览器保存两条cookie数据
path,domain cookie的作用域,表示cookie对哪个网站有效,因为一个网站只能设置自己的cookie不能设置别的网站的cookie,否则会有安全上的问题
expires cookie的超时时间
把应答里面设置的cookie发回给服务器
HttpOnly 禁止脚本访问,出于安全考虑,不允许脚本修改cookie
cookie用途
登录保存密码:其实是把让浏览器把cookie写到文件系统中,下次凭借着cookie就可以直接的登录
购物车 :没有登录也能添加商品到购物车
cookie总结:
cookie是服务器生成,并且服务器来解释
保存有非常重要的信息
Cookies最典型的应用是判定注册用户是否已经登录网站