1.cookie是在浏览器端的,多个浏览器的cookie是不共享的。
2.session 有个sessionid,一般保存在浏览器中的cookie中,每次请求会带着这个sessionid。如果客户端禁用了cookie,那么这个sessionid就会以url的方式传。
详情请看看一下这篇文章
同一个PC,不同的浏览器的cookie是不共享的吗?
@VVL1295: 对
@wolfy: 你可以实验一下,比如你使用谷歌浏览器登录博客园,然后记住密码,如果你换ie,你觉得还用输入吗?
@wolfy: 谢谢你,我明白了,分就给你了。
问题一:不能
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就可以了。
以上只是我的个人理解,可能会有不准确之处。