首页新闻找找看学习计划

关于session原理的疑问

0
悬赏园豆:30 [已解决问题] 解决于 2014-12-14 13:55

可能是问题描述不好,大家望而却步,这里有两个问题:1,cookie可以被多个浏览器共享吗?2,是怎样实现一个浏览器单独关联一个session的?请知道的园友能解决下我的疑问,先谢了。

bobo2018的主页 bobo2018 | 初学一级 | 园豆:135
提问于:2014-12-14 00:52
< >
分享
最佳答案
0

1.cookie是在浏览器端的,多个浏览器的cookie是不共享的。

2.session 有个sessionid,一般保存在浏览器中的cookie中,每次请求会带着这个sessionid。如果客户端禁用了cookie,那么这个sessionid就会以url的方式传。

详情请看看一下这篇文章

http://www.cnblogs.com/wolf-sun/p/3330522.html

收获园豆:30
wolfy | 老鸟四级 |园豆:2636 | 2014-12-14 13:22

同一个PC,不同的浏览器的cookie是不共享的吗?

bobo2018 | 园豆:135 (初学一级) | 2014-12-14 13:27

@VVL1295: 对

wolfy | 园豆:2636 (老鸟四级) | 2014-12-14 13:42

@wolfy: 你可以实验一下,比如你使用谷歌浏览器登录博客园,然后记住密码,如果你换ie,你觉得还用输入吗?

wolfy | 园豆:2636 (老鸟四级) | 2014-12-14 13:43

@wolfy:  谢谢你,我明白了,分就给你了。

bobo2018 | 园豆:135 (初学一级) | 2014-12-14 13:54
其他回答(1)
0

问题一:不能

cookie的本质就是一小段文本字符串,由浏览器自己维护。维护的内容包括:cookie的失效日期,cookie和domain以及path的关联。不同浏览器存储cookie的文件夹不一样,所以无法共享。

还有一点就是不同的浏览器存储的格式不一致:

谷歌浏览器中:

存储文件夹是:C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default

存储文件时:Cookies这一个文件

IE浏览器中:

存储文件夹是:C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files

存储文件是:许多cookie文件

 

问题二:我觉得你的问题描述的不好,应该改为一个session是怎样被维护的?

(1)先说说什么是session?

答:简单的说就是一组request。假如再简单粗暴的理解一个request就是提交一个表单,那么你完成一次购物肯定需要提交多个表单,但是由于http协议是无状态的,你提交当前的表单,这个request中是不包含上一次提交的表单的信息的。那么购物就无法进行下去了。这个时候就需要一个比request更大的概念出来解决问题,那就是session。同属于一个session的request中的数据都会被保存进session中,这样数据就不会丢失,购物就可以进行下去了。

(2)session怎样实现?

(a)因为每一次提交表单,浏览器只会提交该表单中的数据,那咱就使用input[type=hidden]来保存上次表单提交的数据。这样不就可以获取上次表单中提交的数据了

(b)和(a)差不多,只不过是将以前表单中的数据保存在cookie中,浏览器提交表单的时候,会自动提交cookie中的数据。

(c)和(a)(b)最大的不同就是不再通过http传输数据了,而只是传输一个唯一查询串。因为它将所有以前表单提交的数据放在服务器端,这些数据构成一个session对象,每一个session对象通过一个唯一ID进行索引。所以我们只要传输那个id就可以了。

 

以上只是我的个人理解,可能会有不准确之处。

ThreeTree | 园豆:1490 (小虾三级) | 2014-12-14 14:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册