session和cookie的区别

这两天去面试的时候,被人问到了session和cookie的区别。虽然这个问题看上去貌似很简单,但我还真没答上来。

我只知道session是存放在服务器端,而cookie是存放在客户端。其它的还真没去细想。

面试回来后,我就在网上搜索相关的资料。原来cookie存放客户端时还分两种情况:如果没有设置失效时间,那么cookie生命周期是在一次会话过程中,也就是浏览器关闭后,cookie就失效了,这时的cookie是不存放在硬盘上的,它只存放在内存中;如果设置了失效时间,那么关闭浏览器后cookie还是存在的,它是存放在硬盘上的; cookie一般是通过HTTP响应头向服务器传递的。

session一般是存放在服务器端的内存中,当服务器端需要为客户端创建一个session时,先检查客户端发出的请求里面是否包含session id 如果包含,则取出该session(如果没有,则新建一个),如果不包含session id则为此客户端创建一个session并且生成一个与此session相关联的session id ,并且返回给客户端保存,以便下一次请求时把session id发送给服务器端。

在此我有一个问题向广大园友们征求一下答案。如果客户端的请求里包含了session id ,但是去取服务端的session时发现找不到该session id对应的session,它会新建一个session,这时的session id会不会是刚刚传递过来的session id还是说会创建一个新的session id然后覆盖之前的session id呢?

原文地址:https://www.cnblogs.com/xiezhong/p/3978244.html