码迷,mamicode.com
首页 > Web开发 > 详细

基础知识概念:http中session和cookie区别于联系

时间:2021-01-14 10:39:32      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:weixin   数据结构   ons   文件   连接   标识   基础   文字   res   

session:记录在服务器端 默认被存在在服务器的一个文件里(不是内存),session 的运行依赖 sessionID,而 sessionID是存在 cookie 中的

cookie:记录在客户端

session作用:当浏览器访问服务器端某个页面时,会在服务器端开辟出一段内存,这段内存就叫做session,这个内存和浏览器关联在一起,这个被关联的浏览器可以是浏览器的窗口,也可以是这个浏览器的子窗口,也就是说,只允许这个session关联的浏览器访问,如果在新的一个浏览器进行访问时,会生成一个新的session。

原理:HTTP协议是非连接性的,取完当前浏览器的内容,然后关闭浏览器后,http连接就断开了,没有任何机制记录取出后的信息,当访问同一网页的其他页面时(例如进入购物车界面选好商品后进入支付页面进行支付动作,如果没有session,服务器就不知道是哪个用户要进行下单操作,所以服务器要为特定的用户分配特定的session,用于标识这个客户并且跟踪客户,今儿知道购物车中有几件商品),这个时候,信息就读取不出来是哪个用户要进行结算操作了,这时就必须要有一种机制让当前页面读取到原始页面的session内容,把相关内容都衔接上。

HTTP协议的非连接性,也可以这样理解,服务器端要记录用户状态时候,需要某种机制来识别具体是哪个用户的操作,这种机制就是session。这个Session是保存在服务器端的,有一个唯一的标识,在服务端保存Session的方法很多,内存、数据库、文件都有。集群的时候也要考虑Session的转移,在大型的网站,一般会有专门的Session服务器集群,用来保存用户会话,这个时候 Session 信息都是放在内存的,使用一些缓存服务比如Memcached之类的来放 Session。思考一下服务端如何识别特定的客户?这个时候Cookie就登场了。每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的,第一次创建Session的时候,服务端会在HTTP协议中告诉客户端,需要在 Cookie 里面记录一个Session ID,以后每次请求把这个会话ID发送到服务器,我就知道你是谁了。

Cookie其实还可以用在一些方便用户的场景下,设想你某次登陆过一个网站,下次登录的时候不想再次输入账号了,怎么办?这个信息可以写到Cookie里面,访问网站的时候,网站页面的脚本可以读取这个信息,就自动帮你把用户名给填了,能够方便一下用户。这也是Cookie名称的由来,给用户的一点甜头。
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
上面文字转载自:https://www.zhihu.com/question/19786827/answer/28752144

问题:如何知道浏览器和服务器的session是一一对应的呢,又如何保证当前session不会去访问到其他session呢?

解答:当访问一个页面时,服务器给浏览器一个独一无二的号码,也就是session,也给新创建的session相同的号码,使得我们在访问同一浏览器不同页面时带着同一session也能顺利访问到,当访问第二个页面的时候将号码传递给第二个页面,找到对应的session,这里的号码指的是sessionID,session独一无二的标识号码。

session有两种实现方式,第一种是通过cookie实现,第二种通过URL重写实现。

第一种,通过cookie实现:将服务器中开辟的session的号码ID放在cookie中存储(用cookie存储的原因是cookie有临时的或者定时的,临时的就是说在浏览器关闭的时候cookie消失,session作用也是如此,所以可以放在cookie中存储)。

第二种,通过URL重写实现,当客户端不支持cookie时,就要用到此方法

重写URL方法:response.encodeURL()实现

该方法作用:

1. 中文转码,当网页的链接中存在中文时,会转换成百分号或者其他符号代替

2. URL后面加上sessionID,当不支持cookie时,就要用encodeURL实现了,URL后面要跟上sessionID,这样一来,即使在cookie禁用的浏览器上,也能顺利使用session。

https://blog.csdn.net/weixin_42217767/article/details/92760353

规则:

1. 如果浏览器支持cookie时,创建session时,session ID会被保存到cookie中,如果不允许使用cookie时,每次刷新浏览器,都会生成新的session(浏览器会认为这是一个新链接)

2. 如果浏览器不支持cookie ,我们要自己编程实现response.encodeURL()方法

session有效期限:

是不是一个浏览器窗口关闭后没有进行i下一个页面访问时session是不是就消失了呢,答案是:是的,那这样的话是不是也十分的不方便,这时我们需要为session设置一个有效期限,在最近一次访问开始倒计时,每次刷新的时候都刷新倒计时,等到了一定时间我们都没有访问页面的话,这时session就要关闭后,后面再想进行服务器页面访问时就需要重新获取session进行访问了。

session能干什么:

session就是服务器里面的一块内存,内存里面能放任何东西,只要是键值对就可以了。

session里面的名字永远都是String类型

部分内容转载自:https://blog.csdn.net/weixin_42217767/article/details/92760353

基础知识概念:http中session和cookie区别于联系

标签:weixin   数据结构   ons   文件   连接   标识   基础   文字   res   

原文地址:https://www.cnblogs.com/yeyuting/p/14269053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!