session是一种服务端用到的机制,服务器使用一种类似(或者直接就是)散列表的结构存储信息。
当客户端访问服务器时,服务器就回检查这个客户端的请求里面有没有包含一个session的标识-sessionid,如果已经包含了这个sessionid则说明该客户端之前已经访问过服务器,并且服务器为这个客户端创建了session,服务器就回按照这个sessionid来查找相应的session并且使用,如果找不到可能就会新建一个。如果客户端请求没有包含sessionid,那么服务器就回为这个客户端创建一个session并且将生成的这个sessionid发送给客户端(sessionid一般是一个既不重复又不容易被仿造的字符串)
客户端保存这个sessionid的方式可以采用cookie,这样在交互的过程中浏览器可以自动的把这个标识发送给服务器,一般cookie的名字都是一个类似SESSIONID。由于cookie能够被人为地禁止,必须有其他机制来在cookie被禁止是任然能够把sessionid发送给服务端,经常被使用到的一种技术就是URL重写,意思就是把sessid添加到URL路径的后面。添加方式有两种:一种是作为URL路径的附加信息,如: http://....xxx;SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 ;一种是作为查询字符串添加到URL后面,如 http://…../xxx?SEEESIONID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764