cookie与session的实现

cookie与session的实现

ps:本人亲测,阿里云2核4G5M的服务器性价比很高,新用户一块多一天,老用户三块多一天,最高可以买三年,感兴趣的可以戳一下:阿里云折扣服务器

Cookie
实现机制:
浏览器首次访问服务器,发送请求如果没有带身份,服务器检测不到cookie会返回一个登录窗口,输入用户名和密码后再次请求,服务器接受到表单提交上来的用户信息后验证通过,返回一个相应的请求页,并在HTTP头中添加setcookie信息,浏览器接受到返回内容后会处理http头部的相应信息,这里会设置cookie,第二次用户访问服务器时会浏览器会自动把cookie内容读取出来并加到http头部,服务器接受请求后验证提交过来的cookies是否正确,正确直接就返回相应的页面,不正确则返回登录页面。

Cookie的分类:
根据存放的位置可以分为持久化的cookie和临时cookie;持久化cookies就是会存放在%userprofile%/cookies目录下的文本文件;临时cookie是存放在内存中的cookie,又成session cookie或进程cookie。

作用域:
cookie的作用域是根据域名和路径来决定的,域名和路径限制的越小,其作用域就越小。如.sina.com.cn >sina.com.cn>sina.com.cn/news/。第一个是所有以sina.com.cn为基础域名的网页都可以用;第二个只有www.sina.com.cn域名的页面及子路径下的页面可以用;第三个只有www.sina.com.cn/news/下的网页可以用。
另临时cookie的作用域和session一样,只有当前浏览器及其子窗口可以共享。

有效期:
cookie的有效期有3种状态:大于0的数值为相应的有效期的时长;等于0相当与做了一个删除操作;小于0就是说不生成持久化cookie,只是临时的。

浏览器处理流程:
浏览器对cookie首先有限制,比如IE对cookie总数有限制(300个),另外另外每个cookie文件的cookie数有限制(50个),单个cookie文件的大小有限制(4K),当cookie数达到上限时就会删除前面的cookie,IE的处理方式是最近最少使用的原则。此外浏览器在接受到http头中的cookie设置标识后会在相应目录下生产cookie文件,文件名为user@domain【index】形式,这是浏览器自动生成的,user为系统当前用户名,domain为访问页面的域名,index应该是cookie的修改次数,而且当前打开的页面所携带的cookie一定是index最大的cookie文件里的内容。

多cookie:
一个页面只对应一个cookie文件,一个cookie文件里可以保存若干个cookie,每个cookie有自己的有效期、作用域等,所以一个页面可以对应多个cookie,除此之外还包括内存里的临时cookie;但是一个cookie文件可以对应多个页面,但是这些页面都是同一个主域名下的。

Session
实现机制:
session是浏览器访问了服务器通过验证后,服务器发给浏览器的一个身份凭证,并且服务器自己也保存一个一样的ID序列;在下次浏览器访问的时候会来上session的信息,服务器端会坚持session的值在服务器端有没有保存,有保存说明此用户以通过了验证就直接返回请求的页面,并且对提交的数据依据此sessionID进行相应处理;如没有找到相同的session的值,则说明此session可能失效,或是无效的,服务器会重新验证身份并发送一个新的sessionID。

实现方式:
session通常有2种方式去实现:一种就是上面提到的session cookie,把服务器把sessionID作为cookie的内容保存在内存中,就是所谓的临时cookie中,每次请求都以cookie的形式传给服务器;另一种是在浏览器cookie被禁用的情况下如何实现sessionID的提交,当服务器检测到cookie被禁用后,服务器在返回相应页面之前对原先的URL 进行一次重编码,把sessionID的值连接到URL后面,下次浏览器请求时sessionID就以get方式传给了服务器,服务器接受后进行相关验证和处理。

作用域:
session的作用域可以看作是和浏览器进程想关联,只有当前页面及其子页面【继承页面】可以公用一个sessionID,跨浏览器和跨域名都不能公用一个sessionID。因此同时用2个浏览器访问同一个地址时会返回2个不同的sessionID。

有效期:
session的有效期就是通过验证的浏览器进程的生命周期,进程结束后内存被释放,session自然就没有了,此时在服务器端的sessionID还没有删除【如果是URL方式传送session的话,不知道在关了浏览器后重新用之前带有session的URL访问,会有成功么?】;另一种情况是浏览器没有关,但是已经长时间没有和服务器交互了,并且服务器端检测到这个sessionID在规定范围内没有请求动作,就会认为是一个过期的sessionID,直接在服务器端给删除了,这种失效与服务器配置有关。

浏览器处理流程:
浏览器处理session的过程其实就是处理临时cookie的过程,当浏览器接受到临时cookie时,直接保存在浏览器对应页面的内存中,下次请求时再直接附带上就O了。

多Session:
多个session同时存在很简单,直接起多个单独的浏览器,访问服务器就行了。各session间也不会有影响的,否则做并发测试时就很头疼了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CookieSession都是用于实现用户登录的技术。 Cookie是一种存储在用户计算机上的小文件,可以存储一些用户信息,比如用户名、密码等。当用户登录成功后,服务器会将一个包含用户信息的Cookie发送给用户浏览器浏览器会将该Cookie保存在本地。当用户再次访问该网站时,浏览器会自动将该Cookie发送给服务器服务器通过读取Cookie中的信息来判断用户是否已经登录。 Session是一种在服务器端存储用户信息的技术。当用户登录成功后,服务器会创建一个Session对象,将用户信息存储在该对象中,并将该Session对象的ID发送给用户浏览器浏览器会将该Session ID保存在Cookie中,当用户再次访问该网站时,浏览器会自动将该Session ID发送给服务器服务器通过该ID来获取该用户的Session对象,从而判断用户是否已经登录。 总的来说,CookieSession都可以用于实现用户登录,但是Session更加安全,因为用户信息存储在服务器端,而Cookie存储在用户计算机上,容易被窃取。 ### 回答2: CookieSession都是Web应用开发中比较常见的技术,用于实现用户的认证和登录。下面分别从CookieSession两个方面来介绍它们实现登录的过程。 一、Cookie实现登录 Cookie是指浏览器存储在用户电脑上的数据,可以通过设置Cookie实现用户的认证和登录。具体过程如下: 1. 用户输入账号和密码,点击登录按钮。 2. 服务器验证用户的账号和密码是否正确,如果正确就生成一个与该用户相关的唯一标识符token,并将token存储到服务端数据库中,并同时将该token通过设置Cookie方式存储在用户的浏览器上。 3. 当用户再进入该网站时,浏览器会自动将存储在本地的Cookie信息发送到服务端。如果服务端的数据库中存在与该Cookie相对应的token,则认为用户已经登录成功。 4. 如果用户点击了退出按钮,则服务端会删除该用户相对应的token,并清空该用户浏览器上存储的Cookie信息,用户需要重新输入账号和密码才能再次登录。 二、Session实现登录 Session是指服务器保存在内存中的信息,可以通过Session实现用户的认证和登录。具体过程如下: 1. 用户输入账号和密码,点击登录按钮。 2. 服务器验证用户的账号和密码是否正确,如果正确就在服务器内存中创建一个与该用户相关的Session,并将该Session中存储该用户登录的相关信息。 3. 当用户再进入该网站时,浏览器会将自己的Session ID通过Cookie或URL重写等方式发送给服务端,服务端据此在内存中找到该用户对应的Session,并验证用户是否已经登录。 4. 如果用户点击了退出按钮,则服务端会删除该用户相对应的Session,并清空该用户在本地存储的Session ID,用户需要重新输入账号和密码才能再次登录。 总结: 无论是使用Cookie还是Session,它们都可以用来实现用户的认证和登录。但是,Cookie存储在浏览器的本地,安全性相对较低,容易被篡改;而Session存储在服务器的内存中,安全性相对更高,但同时也会增加服务器的负荷。因此,在选择使用哪种技术时,需要根据自己的业务需求进行合理的选择和配置。 ### 回答3: CookieSession都是用来实现登录的技术,但是它们的工作原理和适用场景有所不同。 1. Cookie Cookie是一小段文本信息,存储在用户的浏览器中。当用户访问一个网站时,服务器可以将一个Cookie放到用户的浏览器中,并在以后的访问中使用这个Cookie来识别用户。Cookie可以存储一些关键信息,例如用户ID、用户名、密码等。 Cookie的优点在于它可以持久保存用户信息,即使用户关闭浏览器或者重新启动电脑,信息仍然会被保留。但与此同时,Cookie也会存在一些安全问题。如果用户的Cookie被盗用,就能在未经授权的情况下访问用户的账号和密码。 2. Session Session是一种服务器端的技术,它可以在用户登录成功之后为用户分配一个唯一的会话ID,并将该会话ID与用户在服务器上存储的信息相关联。在使用Session时,当用户访问一个页面时,服务器会检查这个页面所对应的会话ID,并根据该ID来判断用户是否登录。 Session的优点在于它相对于Cookie更为安全。因为Session的数据存储在服务器端,只有服务器能够访问和修改,所以用户信息不容易被盗用。但是,Session也存在些缺点。当Session记录的信息过多时,服务器的内存和CPU负担会相应增加。 总体来说,Cookie适用于一些对安全性要求不高的网站,而Session则适用于一些对安全性要求较高的网站。在实际开发中,我们可以根据实际需要选择Cookie或者Session实现登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值