0

当我使用最新的 Chrome 浏览器并在未关闭 cookie 的情况下登录应用程序时,Glassfish 诉诸 URL 重写的原因是什么?有什么我忘了配置还是什么?它随机发生。

4

1 回答 1

3

JSESSIONID 是确定用户当前 HTTP 会话的值。它通常存储在浏览器 cookie(名为 JSESSIONID)中,以将请求与服务器上的适当会话对象连接起来。

原始请求中不存在 JSESSIONID 的原因可能是服务器没有机会将其发送回浏览器。没有当前 JSESSIONID cookie 的页面上的任何链接(例如使用 c:url)都将使用 URL 重写生成(URL 将包含 jsessionid)。在后续请求中,在将 JSESSIONID 存储为浏览器 cookie 之后,不会发生 URL 重写。

如果用户的浏览器不支持 cookie(或 cookie 的使用已关闭),则 URL 重写将允许用户通过添加到每个 URL 的 jsessionid 继续连接到同一个会话。

但是,如果要关闭 URL 重写,可以通过在 glassfish-web.xml 文件中将 enableURLRewriting 属性设置为 false 来实现

<property name="enableURLRewriting" value="false"/>

您还可以通过确保存在适当的 cookie 并重定向到更合适的 URL 来消除 URL 重写。

于 2012-04-19T17:52:00.757 回答