阻止Cookie后,与会话相关的功能将失效
阻止Cookie后,访问http://127.0.0.1:8080将不再接收到Cookie。而Tomcat默认使用cookie实现会话机制,所以会话功能将失效。
登录成功,点击“访问admin.jsp页面”
虽然已经登录,但是依然没法访问admin.jsp,原因是阻止cookie,admin.jsp中获取的会话是新的会话对象
阻止Cookie后的处理方法
阻止Cookie后,会话失效的主要原因是:每次调用getSession方法,首先是查找名字是JSESSIONID的cookie,如果没有,则创建新的会话对象。当cookie被阻止,每次都找不到JSESSIONID名字的cookie,所以每次都创建新的会话,因此都认为没有登录。
解决办法:强制把JSESSIONID传递给相关资源即可
如果Cookie被阻止,可以使用URL重写方法,强制把名字为JSESSIONID的Cookie的值添加到URL,该方法在HttpServletResponse中定义:
<a href=<%=response.encodeURL(“admin/admin.jsp”)%>>访问admin.jsp页面
URL重写后,会话依然可用
使用URL重写后,会话依然可以用。通过地址栏,可以看到URL为:http://127.0.0.1:8080/ch07/admin/admin.jsp;jsessionid=3FBF140BF8C8E0DE5B44F28C1B0A4147
可见:jsessionid值强制添加到URL,因此不会每次都创建新的会话对象
登录成功,点击“访问admin.jsp页面”
把jsessionid值强制追加到URL,会话依然有效。