点击打印产生新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¶mString=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被覆盖丢失的现象。
weblogic10.3.2缺省值为true,修改这个参数必须升级到weblogic9.2(mp4)及以上版本。