《Oracle Java EE编程指南》09-07:Cookie被阻止的处理

阻止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,会话依然有效。

猜你喜欢

转载自blog.csdn.net/goldentec/article/details/105336920