Cookie和Session详解稍后找回。这种基于文本的信息存储一些“键值”对。cookie在http浏览器中的使用过程1、浏览器发送请求时,会查看你机器上与域名www.test.com相关的cookie文件。如果存在与www.test.com相关的cookie,浏览器会将相关的Cookie“键值”对数据连同请求一起发送给服务器()。如果没有与www.test.com相关的Cookie,浏览器就不会向服务器发送该Cookie。在http协议中,通过RequestHeaders中的Cookie:PHPSESSIS=123456发送。2、如果服务器返回cookie,浏览器会将cookie保存在域名www.test.com相关的cookie文件中,提供给下一次调用http协议的请求,在ResponseHeaders中,通过Set-Cookie:PHPSESSIS=123456(name,value,expirationtime,pathanddomain)返回3。当然,并不是所有的cookie都会被存储,Set-Cookie设置的过期时间是一个persistentcookie,设置cookie时间作为sessioncookie保存在硬盘上的一个文件。如果不设置cookie时间,cookie的生命周期会在浏览器关闭前消失。一般不会保存在硬盘上,而是保存在内存中。4.所以干脆使用cookies一个不安全的cookie实际上是一个存储在文件中的键值对。如果其中存储了一些用户名,只需修改文件中的用户名即可模仿他人登录,因此相对不安全。当然也可以通过其他方式避免,比如加密加盐后的SessionSession存储在服务器端(中介是Cookie或者直接url,url传递session_id的用途未知,这种使用场景比较少见)简单的说,当一个请求到来时,服务器首先会判断自己是否有一个Session信息。如果有,则根据SessionID去数据库中查找是否有对应的用户身份信息。可能存在session失效、非法session信息等可能,所以服务器会重新生成一个随机字符串,就好像没有session信息一样,并在Httpreturnheader中写入新的sessionID信息。另一方面,如果服务器成功获取到用户的身份信息,它将以该身份为请求者服务。在http中,客服端请求中的sessionid一般都是cookie带过来的,所以Session也依赖于cookie。以php中的Session为例。当session_start()开启时,会先获取客户端cookie中的session_id。如果不存在,则根据session_id重新创建一个,获取所有相关信息,放入$_SESSION全局变量中使用。写session也是根据session_id写相关文件,放到$_SESSION全局变量中使用。设置登录状态的过期时间。需要设置session的过期时间和cookie的过期时间才能真正生效(ini_set修改)session。cookie_lifetime表示SessionID在客户端Cookie中保存的时间。默认为0,表示只要浏览器关闭SessionID,会话就会失效。gc_maxlifetime是Session数据在服务器上保存的时间。如果超过这个时间,Session数据会自动删除cookiesession传输的区别主域名和子域名共享cookie总结顶级域名和子域名共享cookie和相互修改域名等,否则cookie无法生成二级域名。您可以将域设置为二级域名或顶级域名。二级域名可以读取设置域为顶级域名或自己的cookies,但不能读取其他二级域名的cookies。例如:如果你想在多个二级域名中共享cookie,你需要将domain设置为顶级域名,这样你就可以在所有二级域名中看到这个cookie的值。顶级域名只能获取域名设置为顶级域名的cookie,无法获取域名设置为其他子域名的cookie。多系统共享登录状态方法一(cookie共享)在顶级域名下开启session,使用相同的session_id必须是二级域名,不同域名不适合使用多系统共享登录state方法一(SSO,没有那么多限制)SSO单点登录/注销浏览器访问单点登录网站。如果会话存在,它将返回数据。如果不存在,则跳转到cas服务器(单独域名的服务)。如果已经登录过,通过检测cookie,casserver会302跳转,通过url返回Ticket(Ticket是随机的,唯一的)给网站。如果还没有登录,会跳转到cas服务器登录页面进行登录,如果登录成功,设置cookie,然后302跳回ticket给网站,同时cas服务器会存储Ticket、cookie和网站主机的对应关系。网站收到Ticket后,通过cas服务器提供的验证url对Ticket进行验证。cas服务器确认后返回成功,网站写入当前域名的sessionid。当用户再次访问网站时,会判断当前会话是否登录。更多方法图请关注微信公众号“p12310086”,一个程序员和hr一起操作公众号!
