如何欺骗会话 cookie 来测试会话复制?
我在两个节点上使用 Jboss,我想确认如果一个节点出现故障,我的会话数据在另一个节点中。
我可以看到我的节点 1 正在设置这个 cookie。我怎样才能为节点 2 欺骗它?
JSESSIONID=3rsZ87MxC7EeukilWW8za7T-.node1; path=/hsr-test; domain=xxxx.xxxx.dev
这是一个较晚的回复,但由于我正在搜索此内容而添加。
这是一个简单的会话 get/put jsp 脚本
<html>
<body>
<a href="testsession.jsp?action=put">put</a>
<a href="testsession.jsp?action=get">get</a>
<%
String action = request.getParameter("action");
if ( null != action && "put".equals(action) ) {
%>
<h2>Set Current Time</h2>
<%
System.out.println( "Putting date now" );
session.setAttribute("current.time", new java.util.Date());
%>
The time is set to <%= session.getAttribute("current.time") %>
<% } else { %>
<h2>Get Time</h2>
<%
System.out.println( "Getting date now" );
%>
The time is <%= session.getAttribute("current.time") %>
<% } %>
<br>
<br>
server: <%=request.getServerName() %>
<br>
<br>
session: <%= session.getId() %>
</body>
</html>
如果您在命令行上,则可以在两个节点上使用它:
curl --cookie "JSESSIONID=ZWarGbkuDUoUuT-iOjYIATN+.2e84d3e9-3497-3e74-9604-a45f36cad465;" http://node1/your_test_page
curl --cookie "JSESSIONID=ZWarGbkuDUoUuT-iOjYIATN+.2e84d3e9-3497-3e74-9604-a45f36cad465;" http://node2/your_test_page
您将在浏览器和两个命令行测试中看到返回的时间。
Late answer, but you can use Fiddler. Run Fiddler alongside your application, then enable breakpoints before requests (Rules -> Automatic Breakpoints -> Before Requests). Make a query to a server you want. It will freeze before executing the request and on the top right you can modify (spoof) the cookies by right-clicking the session ID and entering whatever values you want.
Hope this is helpful. I ran across this question by chance researching another issue.
只要应用程序在集群中运行并<distributable>
在WEB-INF\web.xml
文件中设置,JBoss 中默认执行会话复制。
您可以通过登录到集群中每个节点的 jmx-console 并调用包MBean的方法printCacheDetails()
来验证会话是否已被复制。会话数据应分别为节点打印。jboss.cache
ha-partition, cache-config