很多人了解Session和Cookie的区别,其实Session和Cookie是有非常密切联系的。可以这么说,浏览器禁用了Cookie,服务器端的Session也将失效。

Http协议本身是无状态的,Session机制在一定程度上解决了Web应用状态问题。服务器判断Session唯一性是通过每个Session独有的Session ID,通过在每次http传输的消息中附带Session ID解决了维持会话状态的问题。

那么Seesion的维持和Cookie有什么关系呢?

我们知道Http协议的请求和响应消息分头部和主体两部分,消息的头部没有专门包含Session ID相关的属性,消息的主体更不可能包含Session ID,Session ID会包含在哪里呢?

我试着用webpy+firebug来求解以上的问题,获取到的结果如下:

Session和Cookie的关系(转)

可以清楚的看到:Session ID正是通过Cookie来传输的。所以,在开发web应用时如果session不可用,可以看看是不是Cookie被禁用了。

此外,虽然Session ID是包含在Cookie中的,它们在Cookie中的名字不一定会相同,这取决于服务器端使用的web框架。

百度Session ID在Cookie中的保存方式:

Session和Cookie的关系(转)

Google Session ID在Cookie中的保存方式:

Session和Cookie的关系(转)

(大盛博客)

 

ASP.NET中可以配置SessionID的存储方式,如果客户端禁用了Cookie,可以采用URL传递SessionID的方式,继续支持Session 

相关文章: