HTMLUnit 在登录后不会读取除 JESSIONID 以外的任何 cookie



我的应用程序在成功登录后向响应中添加了一个cookie 'XYZ'。此 Cookie 确定应用程序登录后的特定行为。

我使用shiro FormAuthenticationFilter,这就是cookie的添加方式。

@Override
public boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest     
   request, ServletResponse response) throws Exception {
       Cookie cookie = new Cookie('XYZ', '123');
       cookie.setPath("/");
       cookie.setMaxAge(-1);
       response.addCookie(cookie);
}

使用 HTMLUnit 断言此行为的功能测试失败,因为此 cookie 设置不正确。当我在 Chrome 中使用该应用程序时,它运行良好。调试 HTMLUnit 测试证明,成功登录后使用以下方法,

driver.manage.getCookies() 

仅返回 JESSIONID cookie,而不返回应用程序设置的其他 cookie "XYZ"。

注意:如果我在登录后以外的任何页面上设置此cookie,htmlunit会选择它。

请问有什么想法吗?

很难猜测为什么某些东西在登录后以外的任何页面上有效,但在登录本身中不起作用,这只是另一个页面。特别是如果您没有提供任何代码。

显而易见的非代码答案是:登录名正在执行与页面其余部分不同的操作。找到它是什么并修复它。

运用我的想象力,只是提到这里可能发生的一百件事之一,我敢打赌问题是你正在根据未正确执行或接收的 AJAX 调用设置该 cookie。

最新更新