cookie的作用之一——登录

cookie是如何与登录功能结合起来的

1.理解一下cookie

​ 百科的解释:Cookie,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。也就是说,cookie是类似于身份证一样的东西,客户发送请求时,浏览器把请求的网址和cookie一同发送给服务器,服务器就能知道是哪个用户在发送请求。

2.理解登录

​ 为了获得网站的某些权限,往往先要注册该网站,注册就是往该网站后台的数据库增加一条用户信息的记录,表示拥有这个信息的用户成为了该网站的用户,而为了使每次发送请求的时候,服务器都能知道发送该请求的用户已经注册了该网站并对用户开放某些内容的访问权(可能是个人保存在该网站的信息),这时就需要登录功能。也就是用户先发送个人信息给服务器,服务器将该信息和后台保存的用户信息做对比,就能确认用户的身份,给该用户提供专属的服务。但用户在登录后往往需要进行多个操作,发送多个请求,如果每次请求都要登录,也就是发送用户的信息给服务器,未免太过麻烦,那服务器接收请求时怎么知道这个用户已经登录过了呢?这是登录需要解决的问题。

3.cookie和登录相结合。

思考几个问题,用户登录之后,浏览器可不可以给登录过的用户的cookie做一些改变?也就是制定一个cookie专属于这个用户,让浏览器通过cookie不仅仅能辨别出这个用户,还能知道它是否登录过。还有用户退出登录时,这个cookie用不用改变。

结合上述思考分析,可以知道:

当用户登录时,也就是发送请求和cookie给服务器,服务器对个人信息进行验证后,响应登录请求,而服务器为了标记该用户已经登录过了,会对其带来的cookie进行一些修改,比如增加一个值或者删除一些值。然后把这个cookie返回给客户,同时服务器也会在数据库中保存这个修改后的数据。当用户发送请求时带上这个cookie,服务器通过将cookie和保存在数据库中的cookie做对比,就知道该用户是否登录过。

当用户退出登录时,发一个请求给服务器,服务器为了标记该用户已经退出登录,服务器会对cookie再次进行修改。所以通过cookie,服务器就能轻轻松松辨认出用户的登录和未登录状态。

补充几个知识点:

cookie和域名:

1、cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。

1)Name 和 Value 属性由程序设定,默认值都是空引用。

2)Domain属性的默认值为当前URL的域名部分,不管发出这个cookie的页面在哪个目录下的。

3)Path属性的默认值是根目录,即 ”/” ,不管发出这个cookie的页面在哪个目录下的。可以由程序设置为一定的路径来进一步限制此cookie的作用范围。

4)Expires 属性,这个属性设置此Cookie 的过期日期和时间。

可以知道把cookies的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。,而这个属性的默认值就是“/”,故通常同一域名下的页面共享一个cookie。也可以说cookie和域名是绑定在一起的,访问百度时不会带上谷歌的cookie,因为域名不同。

domain属性默认值是域名,也就是cookie的域是域名。

若访问一个页面,域名为顶级域名,如baidu.com,那这个页面只能获取到域设置为顶级域名的cookie,其他域设置为二级域名的cookie无法获取。

若访问的是百度文库,域名为wenku.baidu.com,这是一个二级域名,那这个页面可以读取domain为baidu.com的cookie,也可以读取domain为wenku.baidu.com的cookie。

所以如果我们想让 www.china.com能够访问bbs.china.com设置的cookies,该怎么办? 我们可以把cookie的domain属性设置成“china.com”,并把path属性设置成“/”,这样两个都能访问这个cookies。

cookie的域名的设置有限制:

如果域名为顶级域名,则cookie只能设置域名为顶级域名,不能设置为二级域名或者三级域名。

如果域名为非顶级域名,则cookie的域名只能为顶级域名或者其他二级域名或者三级域名本身。不能将其设置为 其他二级域名。如wenku.baidu.com这个域名不能将其设置为域名为zhidao.baidu.com的cookie。

未指定域时,默认的域为用哪个域名访问就是哪个,如果为顶级域名访问,那么可以被其他2级域名共享。

如果不是非顶级域名访问,又需要全部该域名下的页面共享这个cookie,那cookie的域可以设置为顶级域名。

那全部该顶级域名下的页面都能共享着cookie。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值