宝安专业手机网站设计公司,网站建设拾金手指下拉十九,李连杰做的功夫网站,黄冈crm系统一、cookie技术思考 一台多用户浏览器发起了三笔请求#xff0c;将某款产品放入购物车中#xff0c;A一次#xff0c;选择了篮球#xff1b;B两次#xff0c;第一次选了足球#xff0c;第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢#xff1f;如果不确认…一、cookie技术思考 一台多用户浏览器发起了三笔请求将某款产品放入购物车中A一次选择了篮球B两次第一次选了足球第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢如果不确认属于谁请求将没有意义。 如果每次请求都带一个用户标识比如用户名这样服务器就会知道该请求属于谁也会知道请求的商品属于谁也就知道了该如何记录。于是cookie诞生了使得无状态的http服务变成了有状态的http服务。
1、加入购物车需要验证密码或者登陆状态吗 我们先来看不需要的情况因为用户名是很容易获取到的如果别人获取了你的用户名他们也可以在你的购物车中添加东西这样来看是很不安全的。所以验证密码或者验证登陆状态时有必要的。 需要验证密码。如果采用验证密码的方案就需要在cookie中携带密码这是很不安全的并且在每次请求的时候都要验证一下密码是否正确这样会降低处理效率。 那选另一种方案验证登陆状态呢
2、如何确保登陆状态的唯一性。 当客户登陆的时候我们可以在服务器的内存或者文件中存储客户登陆的状态比如用户名和过期时间等但是只存储这些同样是不安全的因为其他用户会很轻松的获取你的用户因为用户是有规律的所以就需要确保登陆状态的唯一性于是seesion诞生了。
二、session技术思考 当客户登陆的时候服务端会生成一个session该session有一个全局唯一的sessionid,并且该sessionid会存储客户的相关信息登陆状态以及过期时间并会将sessionid设置在cookie中并返回给客户端。这样客户每次发起请求的时候都会带着该sessionid 该sessionid可以使http服务变成有状态的并且保证了唯一性和确保登陆状态sessionid很难被其他用户获取。 从上述来看session机制是依赖cookie的如果禁用cookiesession的作用就失去了大半虽然可以把sessionid放在请求的头部但是这样会不方便。 java服务器中的sessionid JSESSIONIDxxxxxxxxxxxx PHP服务器中的PHPSESSIONIDxxxxxxxxxxxxxxxxxxxxxx
三、两者的区别
1、存储位置
cookie存储在客户端、最大为4kb网站的免密登陆就是在cookie里面存储密码 session存储在服务器端大小没限制作用域可以共享
2、大小限制
cookie的大小有限制最大为4kb session大小没限制
3、作用域
cookie由于浏览器的同源策略只有同源的情况下才会发送 session在服务端理论上可以进行多域共享
一般来说cookie与session是相辅相成是http服务器认证中的两个部分是同一种技术中的两部分两者并没有区别之分。
四、session的限制
当用户越来越多seesion也会越来越多会增加服务器的负担 并且扩展性低在微服务架构中因为seesion只存在一台服务器上如何确保所有的服务都能访问到该session呢
1、session复制
2、session粘连
当session在机器A生成之后之后所有的请求都会到机器A
3、seesion共享
可以将seesion存储在redis中这样服务就都可以访问到。