本文简单介绍一下session的实现机制,示例的片段代码为java环境。
在客服端浏览器第一次访问一个URL的时候,服务器在返回的
httpresponse header中会带上如下参数告诉浏览器将session的id号作为
cookie保存。如下:
Set-Cookie:JSESSIONID=98BF5B4E64D1EEFD7477A9544A695336; Path=/prjWeb
浏览器再次访问该URL的时候会在httprequest header中的cookie中带上这个
session id,服务器从request header中读取cookie从而达到session的识别。
示例如下:
Cookie:JSESSIONID=98BF5B4E64D1EEFD7477A9544A695336; .......
这是在浏览器支持cookie的时候的工作机制,这些由浏览器和web服务器自动完成。
如果浏览器禁用了cookie的时候,就需要通过编程来保证session id在浏览器和客户端
进行传递。
比如构造一个超链接的时候:服务器端代码将session id作为超链接参数的一部分。
String url = response.encodeURL("/prjWeb/x.req");
PrintWriter pw = response.getWriter();
pw.println("Sample encoded URL --><a href='" + url + "'>purchase</a>" );
传到浏览器的内容会带上session id
<a href='/prjWeb/x.req;jsessionid=1F5DAB0A983ACEDBFC31754E2225119C'>purchase</a>
response.encodeURL在客户端浏览器支持cookie的时候不会输出session id。
应该是encodeURL中通过判断客户端请求头是否带有cookie并且有session id来实现的。
另外,当浏览器禁用cookie后,每次response的header都会有Set-Cookie参数。
在客服端浏览器第一次访问一个URL的时候,服务器在返回的
httpresponse header中会带上如下参数告诉浏览器将session的id号作为
cookie保存。如下:
Set-Cookie:JSESSIONID=98BF5B4E64D1EEFD7477A9544A695336; Path=/prjWeb
浏览器再次访问该URL的时候会在httprequest header中的cookie中带上这个
session id,服务器从request header中读取cookie从而达到session的识别。
示例如下:
Cookie:JSESSIONID=98BF5B4E64D1EEFD7477A9544A695336; .......
这是在浏览器支持cookie的时候的工作机制,这些由浏览器和web服务器自动完成。
如果浏览器禁用了cookie的时候,就需要通过编程来保证session id在浏览器和客户端
进行传递。
比如构造一个超链接的时候:服务器端代码将session id作为超链接参数的一部分。
String url = response.encodeURL("/prjWeb/x.req");
PrintWriter pw = response.getWriter();
pw.println("Sample encoded URL --><a href='" + url + "'>purchase</a>" );
传到浏览器的内容会带上session id
<a href='/prjWeb/x.req;jsessionid=1F5DAB0A983ACEDBFC31754E2225119C'>purchase</a>
response.encodeURL在客户端浏览器支持cookie的时候不会输出session id。
应该是encodeURL中通过判断客户端请求头是否带有cookie并且有session id来实现的。
另外,当浏览器禁用cookie后,每次response的header都会有Set-Cookie参数。