2017-06-23 回答

cookie与 session,一般认为是两个独立的东西,session采用的是在服务器端保持状态的方案,而cookie采用的是在客户端保持状态的方案。但为什么禁用cookie就不能得到session呢?因为session是用session id来确定当前对话所对应的服务器session,而session id是通过cookie来传递的,禁用cookie相当于失去了session id,也就得不到session了。

如何禁用cookie?

1、启动ie;

2、在“工具”菜单上,单击“internet选项”,打开“internet选项”对话框;

3、单击“隐私”选项卡,将滑块上移到更高的隐私级别。如果移动到最顶端则是选择“阻止所有的cookie”,此时系统将阻止所有网站的cookie,而且网站不能读取计算机上已有的cookie;

4、单击“确定”按钮。

sessionid是存储在cookie中的,解决方案如下:

session url重写,保证在客户端禁用或不支持cookie时,仍然可以使用session

session机制。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已包含了一个session标识(称为session id),如果已包含则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(检索不到,会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存。 保存这个session id的方式可以采用cookie,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器。一般这个cookie的名字都是类似于 seeesionid。但cookie可以被人为的禁止,则必须有其他机制以便在cookie被禁止时仍然能够把session id传递回服务器。 经常被使用的一种技术叫做url重写,就是把session id直接附加在url路径的后面。还有一种技术叫做表单隐藏字段。就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。