我的环境:
- 野蝇14
- 浏览器Firefox(启用Cookie/JavaScript)
- 使用response.encodeURL对链接的url进行编码的简单Web应用程序
- web.xml:没有会话跟踪设置
有时链接的url包括jsessionid请参阅以下内容:
<a href="/VocabDB-1.0/MyVocab/Index;jsessionid=UGGha-TULRrZNFqQdtqdVlpBQQEDE-WwRrj4l78P.gpcit2ua7371tv9">Test Link</a>
大多数时候链接是
<a href="/VocabDB-1.0/MyVocab/Index">Test Link</a>
有什么想法吗?谢谢
这很正常:在第一个请求时,服务器不知道客户端是否接受cookie,所以它发送一个cookie,它还将会话ID存储在URL中。
在第二个请求中,如果它从cookie中接收到会话ID,它就知道不再需要将其添加到URL中,因此停止执行此操作
顺便说一句,encodeURL的javadoc已经解释过了:
通过包含会话ID对指定的URL进行编码,或者,如果不需要编码,则返回不变的URL。该方法的实现包括确定会话ID是否需要在URL中编码的逻辑。例如,如果浏览器支持cookie,或者会话跟踪已关闭,则URL编码是不必要的。
对于健壮的会话跟踪,servlet发出的所有URL都应该通过该方法运行。否则,URL重写不能用于不支持cookie的浏览器。