标签:组合 地址 使用 $path exp res 规范 无法 首部
Cookie概述
HTTP是一种无状态的请求/响应协议,用户通过浏览器访问Web站点后,Web服务端没有可用信息来判断是哪个用户发起的请求,更加无法知道下次访问的还是不是上次访问的用户,无法识别当前用户。最初,为了解决这个问题出现了很多解决方案,例如客户端IP地址跟踪、用户登录认证、URL中嵌入识别信息等,但都没有很好的解决根本问题。然而,Cookie的设计实现很好的解决了这个问题。用户通过浏览器访问Web站点后,服务端会将一些Key/Value组合的键值对通过Set-Cookie或Set-Cookie2返回给浏览器,用户再次访问Web站点时浏览器会将符合条件的键值对再发送给服务端,这样服务端就可以通过这个键值信息识别出当前用户。
Cookie分类
Cookie可以分为两类:会话Cookie和持久Cookie。会话Cookie是一种临时Cookie,没有设置它的有效期,当用户退出浏览器的时候,它将会被删除。当设置了Cookie的有效期后,它就是持久Cookie,它可以被存储到硬盘上,当用户退出浏览器或机器重启时,它依然存在,可以被再次读取使用。
Cookie版本
当前可使用的Cookie规范有两个版本:Cookie版本0和Cookie版本1。Cookie版本1是对Cookie版本0的扩展,版本1可以和版本0互操作,但是Cookie版本1没有Cookie版本0使用的广泛。
Cookie版本0属性
版本0定义了Set-Cookie响应首部、Cookie请求首部。
Set-Cookie响应首部,其实就是服务端返回的Cookie信息,具体的语法如下:
Set-Cookie:key=value;expires=date;domain=domain;path=path;secure
Key/value表示在服务端可跟踪、可识别的用户信息;expires表示Cookie的结束日期,如果没指定,Cookie会在用户退出浏览器时过期;domain告诉浏览器这个Cookie可以被发送到哪个域名,如果没指定,默认为产生Cookie的服务器主机名,浏览器会存储很多不同网站的Cookie,浏览器会根据domain的值将Cookie发送到对应的域名下;path指定Cookie对哪些请求路径生效,如果没指定,默认为产生Cookie的URL路径;secure表示在使用SSL安全连接时才发送Cookie,若没设置secure,则没限制。例如:
Set-Cookie:member_id=1496800101;expires=Tuesday 16-Aug-01 22:10:11 GMT;domain=“abc.com";path=/member;secure
Cookie请求首部,就是浏览器请求服务端时发送的Cookie信息,具体语法如下:
Cookie:key1=value1;key2=value2;key3=value3...
例如:
Cookie:member_id=1496800101
Cookie版本1属性
版本1定义了Set-Cookie2响应首部、Cookie2请求首部。这个版本做了如下一些改动:
Set-Cookie2响应首部具体语法如下:
Set-Cookie2:key=value;Version=“1”;Comment=Comment;CommentURL=CommentURL;Discard;Max-Age=age;domain=domain;path=path;Port=Port;secure
Version对于Cookie规范的版本;Comment说明服务器如何去使用这个Cookie;CommentURL表示一个URL,指向描述该Cookie的文档;Discard表示如果设置此标识,会在浏览器退出时放弃此Cookie;Max-Age使用相对当前时间的秒数来设置Cookie的生命周期;Port表示对Cookie生效的端口,多个端口可用逗号分隔。
Cookie2请求首部会回传每个Cookie的附加信息,也就是Set-Cookie2中的属性信息,例如:
Cookie:$Version=“1”;member_id=14690801;$Domain=“abc.com”;$path=/member
Cookie缺点
虽然Cookie可以很好的解决识别用户的问题,但是,它也有很多的缺点:
标签:组合 地址 使用 $path exp res 规范 无法 首部
原文地址:https://www.cnblogs.com/fan-1994716/p/11829355.html