一个点击打印产生新jsessionid的问题

现象:

客户的环境是win+weblogic10.3.2,使用ssh框架,登陆客户的系统后,展现、导出等功能多正常,点击打印按钮后,能出现预览窗口,再进行其他操作就会自动跳转到登陆界面。

使用HTTPAnalyzer检查出,cookie发生变化:

登陆后的cookie:
Cookie Name Value
JSESSPPADP fMQpTqmPVQBNSkssZ0zVMvyqKlG0yMvXGMQfbXLJxCQMnn6v82fM!1588576729

点击打印链接:
Request Headers Value
(Request-Line) GET /adp/reportServlet?action=1&fileName=LS/LS001_view.raq&srcType=file&paramString=bbglnm%3DB533D1DCD5A49BE28868AE1720B437CB%3Bbbsj%3D2011%3Bjgdm%3D000000000000000 HTTP/1.1

点击打印后的cookie:
Set-Cookie Name Value Path Domain Expires
JSESSPPADP n4HGTqnBKM55NjBQc9DVHf9nygpvLxs4sHyQbndYQGjgXfDM16vp!1588576729

解决办法:

weblogic.xml中做如下配置便可:

Xml代码:

<session-descriptor>

<cookie-http-only>false</cookie-http-only>

</session-descriptor>

问题分析

这个问题的确是由于weblogic10.3.2对session的安全管理级别上的特殊性导致,即缺省设置了<cookie- http-only>true</cookie-http-only>。由于这个安全级别导致脚本里或者插件里的请求无法发送 cookie也给服务器,服务器没收到sessionid便重新生成了一个新的ID将原有ID覆盖。造成一些特殊请求session被覆盖丢失的现象。

cookie-http-only

true

Specifies whether HttpOnly cookies are enabled. When this element is set to true, all session cookies would be unavailable to the browser scripts. The default value is true. Therefore, HttpOnly cookies are enabled by default.

weblogic10.3.2缺省值为true,修改这个参数必须升级到weblogic9.2(mp4)及以上版本。